当您拥有从其他人继承的模型类时,ASP.NET MVC是否提供了任何简单的方法来使模型绑定工作?
在我的场景中,我有一个强类型为List<Person>
的视图。
我有几个继承自Person
的课程,即PersonTypeOne
和PersonTypeTwo
。
我有三个强类型的部分视图,其名称与这些类名相匹配(并为各自模型的属性呈现表单元素)。
这意味着在我的主视图中我可以使用以下代码:
<% for(int i = 0; i < Model.Count; i++)
{
Html.RenderPartial(Model[i].GetType().Name, Model[i]);
} %>
这很有效,除了用户提交表单时,相关的控制器操作方法只获得List<Person>
,而不是Person
,PersonTypeOne
和{{1}的列表}。
这与预期完全一样,因为表单提交不包含足够的信息来告诉默认模型绑定器创建PersonTypeTwo
和PersonTypeOne
类的任何实例。
那么,有没有办法从默认的模型绑定器中获取这些功能?
答案 0 :(得分:4)
您应该创建单独的模型以绑定到您的输入。您的ViewModels和EditModel是真正独特的职责,因此值得拥有自己的对象。