【发布时间】:2010-07-15 15:40:24
【问题描述】:
所以我有一个继承自 DefaultModelBinder 的自定义模型绑定器,我在其中重写 BindProperty() 方法来处理我们创建的一种类型的字段。
我还有一个我们想覆盖 BindModel() 的控制器,因为我们正在使用该控制器在会话中为多个视图处理一个对象。
所以我有 CustomModelBinder:DefaultModelBinder,然后在我们重写 BindModel() 的类中,我有从 CustomModelBinder 继承的那个。 SpecialModelBinder: CustomModelBinder
但我在 CustomModelBinder 中的 BindProperty() 覆盖中设置了一个断点,并且在使用同时覆盖 BindModel() 的控制器时,这永远不会受到影响。
我不能这样继承吗?这里发生了什么?
谢谢!
编辑:
在 global.asax 中:
ModelBinders.Binders.Add(typeof(ClassA), new SpecialModelBinder());
ModelBinders.Binders.Add(typeof(ClassB), new CustomModelBinder());
ModelBinders.Binders.Add(typeof(ClassC), new CustomModelBinder());
ModelBinders.Binders.Add(typeof(ClassD), new CustomModelBinder());
public class CustomModelBinder : DefaultModelBinder
{
// this will be hit in controllers that handle classes B, C, and D, but will not be hit in controller that handles ClassA
protected override void BindProperty(...){}
}
public class SpecialModelBinder : CustomModelBinder
{
// this will be hit when working in controller that handles ClassA only
public override object BindModel(...){}
}
【问题讨论】:
-
你能发布一些示例代码吗?
标签: c# asp.net asp.net-mvc