Не удается получить настраиваемый атрибут ASP.NET MVC RangeAttribute для работы с DateTime
Я пытаюсь установить ограничение даты в поле DateTime. Когда я использую жестко закодированные значения, это работает из коробки.
Но когда я создаю свой собственный класс RangeAttribute, это не так.
Это работает
ViewModel:
public class OrderViewModel
{
[Display(Name = "Ship Date")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
[Range(typeof(DateTime), "4/3/2013", "3/4/2014",
ErrorMessage = "Value for {0} must be between {1} and {2}")]
public DateTime ShipDate { get; set; }
}
Вывод HTML:
<input class="text-box single-line" data-val="true" data-val-date="The field Ship Date must be a date." data-val-range="Value for Ship Date must be between 3/4/2013 12:00:00 AM and 3/4/2014 12:00:00 AM" data-val-range-max="03/04/2014 00:00:00" data-val-range-min="03/04/2013 00:00:00" data-val-required="The Ship Date field is required." id="ShipDate" name="ShipDate" type="date" value="01/01/0001">
Это не работает
Пользовательский атрибут
public class ShipDateAttribute : RangeAttribute
{
public ShipDateAttribute()
: base(typeof(DateTime), DateTime.Now.AddDays(+1).ToShortDateString(), DateTime.Now.AddYears(+1).ToShortDateString()) { }
}
ViewModel
public class OrderViewModel
{
[Display(Name = "Ship Date")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
[ShipDate(ErrorMessage = "...")]
public DateTime ShipDate { get; set; }
}
HTML-вывод
<input class="text-box single-line" data-val="true" data-val-date="The field Ship Date must be a date." data-val-required="The Ship Date field is required." id="ShipDate" name="ShipDate" type="date" value="01/01/0001">