0

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

控制器:

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

4

1 回答 1

0

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

Steven Sanderson 还写了一篇文章another article,说明了如何使用纯客户端模板而不依赖 AJAX 调用来添加新项目。

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

于 2013-03-06T21:54:50.717 回答