C# 停止验证ModelState Core 3中返回无效的空DateTime字段
我有一个具有以下语法的razor页面C# 停止验证ModelState Core 3中返回无效的空DateTime字段,c#,asp.net-core,razor,C#,Asp.net Core,Razor,我有一个具有以下语法的razor页面 <form method="post"> <input id="Text1" type="date" asp-for="@Model.PersonModel.DOB" /> <h2> Is Valid: @ModelState.IsValid </h2> <input id="Submit1" type="submit" value="submit
<form method="post">
<input id="Text1" type="date" asp-for="@Model.PersonModel.DOB" />
<h2>
Is Valid: @ModelState.IsValid
</h2>
<input id="Submit1" type="submit" value="submit" />
</form>
在我的个人模型中
public class PersonModel
{
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
[CustomDateTime()]
public DateTime DOB { get; set; }
}
public class CustomDateTimeAttribute: ValidationAttribute
{
public CustomDateTimeAttribute()
{
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
return ValidationResult.Success;
//return base.IsValid(value, validationContext);
}
}
当我在UI页面上输入nothing时,点击submit,如果日期为空,它将被忽略并返回Invalid,但是如果为空,我希望它返回Valid,如果日期不正确,则仅返回Invalid。我认为,通过使用自定义验证器,您可以使用如下可为空的日期时间:
public DateTime? DOB { get; set; }
或者以另一种形式
public Nullable<DateTime> DOB { get; set; }
public可空DOB{get;set;}
public Nullable<DateTime> DOB { get; set; }