Не удается получить настраиваемый атрибут 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">

0 ответов

Другие вопросы по тегам