验证并发布模型中的模型列表

时间:2013-03-06 21:39:33

标签: c# asp.net-mvc

我很难弄清楚如何在主模型中验证/提交模型列表。例如:

控制器:

[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中设置了,但子模型应该是一个任意数量,具体取决于用户想要添加的数量。我怎样才能做到这一点,以便我对子模型的验证工作,当我提交帖子时,一切都完全适合模型。

1 个答案:

答案 0 :(得分:0)

我建议您在命名输入字段时使用非顺序索引。史蒂文桑德森有一个关于这个主题的excellent article,说明了如何实现这一目标的分步示例。它使用自定义Html.BeginCollectionItem帮助程序,它将使用Guids为集合属性的输入字段生成专有名称,从而尊重默认模型绑定程序使用的naming convention

史蒂文桑德森还写了another article,它说明了如何使用纯客户端模板实现相同的功能,而不依赖于AJAX调用来添加新项目。

但请记住,无论您做什么,一旦提交表单,如果您希望默认模型绑定器能够正确绑定视图模型上的集合属性,则应遵循命名约定。