Связывание пользовательской модели не вызывается, если тип допускает значение NULL

У меня есть настраиваемая структура под названием 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, или есть что-то, что я? м отсутствует?

7
задан René 3 April 2011 в 23:20
поделиться