我有一个带有自定义 DateRange 验证属性的模型
public class Step1ViewModel
{
[DataType(DataType.Date)]
[DateRange(ErrorMessage="Date must be between blabla")]
public DateTime? BirthDate1 { get; set; }
}
当我使用 View 显示此模型时,即使我在未提供 date 的情况下提交,它也会从自定义 Validation Attribute 引发错误。我没有用 [Required] 标记此属性,并且该属性可以为空(DateTime?)。我不明白这种行为。
我希望能够在不引发错误的情况下提供日期。
这是自定义验证属性:
public class DateRangeAttribute : ValidationAttribute
{
public DateTime FirstDateYears { get; set; }
public DateTime SecondDateYears { get; set; }
public DateRangeAttribute()
{
FirstDateYears = Convert.ToDateTime("1801-01-01");
SecondDateYears = Convert.ToDateTime("2101-01-01");
}
public override bool IsValid(object value)
{
DateTime date = Convert.ToDateTime(value); // assuming it's in a parsable string format
if (date > FirstDateYears && date < SecondDateYears)
return true;
return false;
}
}