Позволяет сделать следующие предположения;ASP.NET MVC 3 Razor C #, строго типизированное представление, привязанное к модели представления (не к сущностям и т. Д.), Использующее метод Html.EditorFor, чтобы редактировать свойство DateTime с нулевым значением в модели представления.Кажется, что два добавленных мной атрибута аннотации данных вызывают сбой привязки модели.
Пример кода представления
@model MyApp.ViewModels.NullableDateTimeViewModel
@using (Html.BeginForm())
{
@Html.EditorFor(m => m.DateOfBirth)
}
Пример кода ViewModel
[DataType(DataType.Date,
ErrorMessage = "Please enter a valid date in the format dd MMM yyyy")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd MMM yyyy}")]
public class NullableDateTimeViewModel
{
public DateTime? DateOfBirth { get; set; }
}
Пример кода контроллера
[HttpPost]
public ViewResult DoB(NullableDateTimeViewModel nullableDateTimeVM)
{
ContextDB db = new ContextDB();
Customer cust = new Customer();
// DateOfBirth is null so the update fails
cust.DateOfBirth = nullableDateTimeVM.DateOfBirth.Value;
db.Customers.Add(cust);
db.SaveChanges();
}
Данные, введенные в представлении, не являютсяотправка обратно в контроллер при отправке формы в представлении при добавлении атрибутов аннотации данных.Это означает, что привязка модели не выполняется при использовании EditorFor с этими атрибутами.Привязка модели прекрасно работает с TextBoxFor, значение, введенное в поле ввода TextBoxFor, передается обратно в представление с моделью представления.В чем здесь проблема с EditorFor и атрибутами проверки аннотации данных?
Можем ли мы найти решение, которое не включает в себя повторное создание колеса путем создания нескольких дополнительных классов, помощников, шаблонов и написания большого количества дополнительного кода?Я ищу решение на одну или две строки.