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にカスタムモデルバインダーを2回追加する必要があるということです。
ModelBinders.Binders.Add(typeof(TimeOfDay), new TimeOfDayModelBinder());
ModelBinders.Binders.Add(typeof(TimeOfDay?), new TimeOfDayModelBinder());
それは機能しますが、私が気に入らないことがあります。これは私の型をnull許容として処理するために本当に必要ですか、それとも私が欠けているものがありますか?