asp.net-mvc - ASP.NET MVC ModelBinding 继承类

标签 asp.net-mvc inheritance modelbinders

我有一个关于 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 (你将必须 - 最终 - 但有更好的方式来度过你的时间;-)你可以阅读thisthis .

关于asp.net-mvc - ASP.NET MVC ModelBinding 继承类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1829677/

相关文章:

c++ - 重写派生类中基类私有(private)成员的行为,C++

javascript - 将 .apply() 与 'new' 运算符一起使用。这可能吗?

Java构造函数超参数

c# - 使用 Entity Framework 从 ASP.NET MVC (C#) 中的 DropDown 获取 SelectedValue

jquery - 防止 ASP.NET MVC bundle 加载多次

javascript - jQuery ajax 调用 mvc Action 不会触发成功/错误

c# - 在 ASP.NET MVC 2 中,我可以使用默认的 ModelBinder 将查询字符串反序列化为数组吗?

asp.net-mvc-4 - ASP.Net Web Api 未在 POST 上绑定(bind)模型

asp.net-mvc - 我不断收到 MVC3 的 HTML5 语法错误

c# - 正则表达式不匹配任何html标签