模型绑定&派生的模型类

时间:2010-06-01 16:42:55

标签: asp.net-mvc-2 modelbinders model-binding

当您拥有从其他人继承的模型类时,ASP.NET MVC是否提供了任何简单的方法来使模型绑定工作?

在我的场景中,我有一个强类型为List<Person>的视图。

我有几个继承自Person的课程,即PersonTypeOnePersonTypeTwo

我有三个强类型的部分视图,其名称与这些类名相匹配(并为各自模型的属性呈现表单元素)。

这意味着在我的主视图中我可以使用以下代码:

<% for(int i = 0; i < Model.Count; i++)
   { 
       Html.RenderPartial(Model[i].GetType().Name, Model[i]);
   } %>

这很有效,除了用户提交表单时,相关的控制器操作方法只获得List<Person>,而不是PersonPersonTypeOne和{{1}的列表}。

这与预期完全一样,因为表单提交不包含足够的信息来告诉默认模型绑定器创建PersonTypeTwoPersonTypeOne类的任何实例。

那么,有没有办法从默认的模型绑定器中获取这些功能?

1 个答案:

答案 0 :(得分:4)

您应该创建单独的模型以绑定到您的输入。您的ViewModels和EditModel是真正独特的职责,因此值得拥有自己的对象。

相关问题