У вас неверное определение атрибута для [Required(ErrorMessage="Please specify a date", ErrorMessageResourceType = typeof(DateTime))]
. Я подозреваю, что это вызывает проблему.
Свойство ErrorMessageResourceType используется вместе со свойством ErrorMessageResourceName . Вы можете проверить эту ссылку для получения дополнительной информации о том, как правильно их использовать (не имеет прямого отношения к вашей проблеме).
Измените код на это, и у вас все будет готово:
[Required(ErrorMessage="Please specify a date")]
[DisplayName("Date of Use of Slides")]
[DataType(DataType.Date)]
public string UsageDate { get; set; }
Не совсем уверен, но вы также можете сбросить [DataType(DataType.Date)]
, поскольку вы уже переформатировали значение даты в строку при заполнении модели (я полагаю?).
Просто предложение, но вы, возможно, захотите рассмотреть вместо преобразования DateTime в строку, вместо этого используйте DisplayFormatAttribute , а затем измените свойство UsageDate, чтобы оно выглядело примерно так:
[Required(ErrorMessage="Please specify a date")]
[DisplayName("Date of Use of Slides")]
[DisplayFormat(DataFormatString = "{0:d}")]
public DateTime UsageDate { get; set; }
Где значение DisplayFormatAttribute.DataFormatString
соответствует желаемому выходному форматированию DateTime. См. на этой странице для получения полного списка шаблонов форматирования.
С указанным выше определением свойства вы можете затем вызвать <%=Html.DisplayFor(m => m.UsageDate)%>
в вашем представлении, и оно будет отображать дату в формате, который вы указали в атрибуте. Гораздо чище и гораздо более расширяемо, чем преобразование DateTime в строку перед отправкой в View - но, конечно, это полностью ваше дело. :)
Счастливых путешествий!