У меня есть настраиваемая структура под названием TimeOfDay
, которая используется в такой модели представления:
public class MyViewModel
{
public TimeOfDay TimeOfDay { get; set; }
}
Я создал настраиваемый связыватель модели под названием TimeOfDayModelBinder
и зарегистрировал его в Global.asax.cs вот так:
ModelBinders.Binders.Add(typeof(TimeOfDay), new TimeOfDayModelBinder());
И все отлично работает. Однако, если я изменю свою модель представления на эту:
public class MyViewModel
{
public TimeOfDay? TimeOfDay { get; set; } // Now nullable!
}
Моя пользовательская привязка модели больше не вызывается. Я знаю, что свойство больше не является типом TimeOfDay, а является Nullable, которое отличается. Значит ли это, что я должен дважды добавить свой собственный связыватель модели в Global.asax.cs, например:
ModelBinders.Binders.Add(typeof(TimeOfDay), new TimeOfDayModelBinder());
ModelBinders.Binders.Add(typeof(TimeOfDay?), new TimeOfDayModelBinder());
Это работает, но мне что-то не нравится. Действительно ли это необходимо для обработки моего типа как допускающего значение NULL, или есть что-то, что я? м отсутствует?