我有一個自定義的結構稱爲TimeOfDay
這是在視圖模型中使用這樣的:當類型爲空不叫自定義模型綁定
public class MyViewModel
{
public TimeOfDay TimeOfDay { get; set; }
}
我創建了一個自定義模型粘合劑稱爲TimeOfDayModelBinder
並在全球註冊它.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());
它的工作原理,但這裏還有一些我不喜歡它。這是真的有必要處理我的類型爲空,或者有什麼我失蹤?
我不認爲你錯過了什麼。據我所知,這是做這件事的標準方式。 – LukeH 2011-04-03 23:35:45
你有沒有想過這個?我有一個類似(但不完全)的問題。請參閱[我的問題](http://stackoverflow.com/questions/5519548/)。 – notJim 2011-04-04 19:43:29
@notJim我沒有深入研究,但結論是我需要添加模型綁定器兩次。一次是不可空的,一次是可空的,因爲它實際上是CLR的兩種不同類型。 – 2011-04-07 15:52:59