我有一个关于 ASP.NET MVC(我使用的是 MVC 2 预览版 2)中与继承相关的 ModelBinding 的问题。
假设我有以下接口(interface)/类:
interface IBase
class Base : IBase
interface IChild
class Child: Base, IChild
我有一个自定义模型绑定(bind)器 BaseModelBinder。
以下工作正常:
ModelBinders.Binders[typeof(Child)] = new BaseModelBinder();
ModelBinders.Binders[typeof(IChild)] = new BaseModelBinder();
以下不起作用(绑定(bind)子类型的对象):
ModelBinders.Binders[typeof(Base)] = new BaseModelBinder();
ModelBinders.Binders[typeof(IBase)] = new BaseModelBinder();
有什么方法可以为基类创建一个模型绑定(bind)器,该模型绑定(bind)器将应用于所有继承类?我真的不想为每个可能的继承类手动输入一些东西。
此外,如果可能的话,有没有办法覆盖特定继承类的模型绑定(bind)器?假设我可以正常工作,但我需要 Child2 的特定模型绑定(bind)器。
提前致谢。
最佳答案
我采取了一条简单的路线,我只是在启动时使用反射动态注册所有派生类。也许这不是一个干净的解决方案,但初始化代码中的几行就可以了;-)
但是如果你真的想弄乱模型 Binder (你将必须 - 最终 - 但有更好的方式来度过你的时间;-)你可以阅读this和 this .
关于asp.net-mvc - ASP.NET MVC ModelBinding 继承类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1829677/