我的班级图:
BaseContentClass
如果我这样做
ModelBinders.Binders.Add(typeof(BaseContentObject), new BaseContentObjectCommonPropertiesBinder());
然后当出现类型Tab的控制器动作参数时,不会触发自定义模型绑定器。
如果我这样做会被解雇:
ModelBinders.Binders.Add(typeof(Tab), new BaseContentObjectCommonPropertiesBinder());
但是我不想在我的global.asax.cs中编写“n”个Add语句来将所有派生类与我的自定义模型绑定器关联起来,是吗?我不知道我是否有其他选择。
答案 0 :(得分:2)
ModelBinders.Binders property属于ModelBinderDictionary类型,它使用该类型作为键。因此,它将忽略您为基类注册模型绑定器。阅读此article from Los Techies我认为你可以通过在类型上定义一个binder属性来解决这个问题,请参阅文章中的顺序优先顺序。
答案 1 :(得分:2)
尝试这样做。我没有测试过,但我相当肯定它会起作用。
[ModelBinder(typeof(BaseContentObjectCommonPropertiesBinder))]
public class BaseContentObject {}