ASP.NET MVC View用于具有相同基类的数据类

时间:2010-03-07 05:06:23

标签: asp.net-mvc

我有一个将基类作为数据类的编辑页面,它将显示不同的编辑器形式,具体取决于模型的派生类。但是,发布后

[HttpPost]
public ActionResult Edit(BaseClassModel model)

此处的模型只保存基类的值,不能转换回派生类。

如何解决这个问题?

谢谢

1 个答案:

答案 0 :(得分:1)

根据您实施的其余部分,您可以

  • 首选封装而不是继承,让每个当前子类包含一个包含所有公共字段的复杂属性
  • 编写自己的ModelBinder(查看DefaultModelBinder源代码示例)并在Global.asax中创建它,例如:ModelBinders.DefaultBinder = new ComplexModelBinder();
  • 创建BaseClassModelBinderAttribute并使用该标记标记每个参数,例如:public ActionResult Edit([BaseClassModelBinder] BaseClassModel model)
  • 上述
  • 的组合