カスタムの DateRange 検証属性を持つモデルがあります
public class Step1ViewModel
{
[DataType(DataType.Date)]
[DateRange(ErrorMessage="Date must be between blabla")]
public DateTime? BirthDate1 { get; set; }
}
このモデルを View で表示すると、 date を指定せずに送信しても、カスタム Validation Attribute からエラーが発生します。このプロパティに [Required] のタグを付けていませんでした。プロパティは null 可能です (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;
}
}