我很难弄清楚如何在主模型中验证/提交模型列表。例如:
控制器:
[HttpPost]
public ActionResult submitData(MyModel model){
...submit data...
}
型号:
public class MyModel{
[Required]
public string Title{get;set;}
...
[Required]
IList<SubModel> SubModels{getset;}
}
public class SubModel{
[Required]
public string Title {get;set;}
}
查看:
@using(Html.BeginForm("submitData", "Home", FormMethod.Post){
@Html.TextBoxFor(x=>x.Title);
... Code for submodels
}
子模型应该能够动态添加,我已经在javascript中设置了,但子模型应该是一个任意数量,具体取决于用户想要添加的数量。我怎样才能做到这一点,以便我对子模型的验证工作,当我提交帖子时,一切都完全适合模型。
答案 0 :(得分:0)
我建议您在命名输入字段时使用非顺序索引。史蒂文桑德森有一个关于这个主题的excellent article
,说明了如何实现这一目标的分步示例。它使用自定义Html.BeginCollectionItem
帮助程序,它将使用Guids为集合属性的输入字段生成专有名称,从而尊重默认模型绑定程序使用的naming convention
。
another article
,它说明了如何使用纯客户端模板实现相同的功能,而不依赖于AJAX调用来添加新项目。
但请记住,无论您做什么,一旦提交表单,如果您希望默认模型绑定器能够正确绑定视图模型上的集合属性,则应遵循命名约定。