2010-03-07 63 views
2

我有一个编辑页面,它具有基类作为数据类,它将根据模型的派生类显示不同的编辑器窗体。但是,发布后ASP.NET MVC查看具有相同基类的数据类

[HttpPost] 
public ActionResult Edit(BaseClassModel model) 

此处的模型仅保留基类的值,并且不能转回派生类。

这怎么解决?

谢谢

回答

1

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

  • 体型封装在传承,使每个当前的子类包含复杂属性的所有公共字段
  • 编写你自己的ModelBinder(以DefaultModelBinder源为例),并在Global.asax中创建它,例如:ModelBinders.DefaultBinder = new ComplexModelBinder();
  • 创建一个BaseClassModelBinderAttribute并标记每个你的论点,例如:public ActionResult Edit([BaseClassModelBinder] BaseClassModel model)
  • 上述组合