当类型可以为空时,不调用自定义模型绑定器
我有一个名为
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());
它有效,但有一些我不喜欢的东西。这是否真的有必要将我的类型处理为可空,或者是否有我缺少的东西?
没有找到相关结果
已邀请:
2 个回复
恋裂
您需要在DependencyResolver / IOC容器中注册它或执行此操作(在Global.asax - app start中):
呢率篓舍烫
和
实际上是CLR中的两种不同类型。所以我想我必须忍受它。 :-)