2013-03-06 74 views
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中设置,但子模型应该是任意的数量,取决于用户想要添加的数量。我怎样才能使它所以我为子模型验证工作,当我提交后,一切都正好放进模型。

回答

0

我命名你的输入字段,当你使用非连续的索引建议。史蒂芬桑德森具有关于这个主题示出关于如何实现这一步一步的例子的excellent article。它使用了自定义Html.BeginCollectionItem帮手,这将照顾到产生使用的GUID集合属性的输入字段适当的名称,并且尊重的默认模型使用的粘合剂的naming convention

Steven Sanderson也写了another article,它说明了如何使用纯客户端模板来实现,而不是依靠AJAX调用添加新项目。

但要记住,无论你做什么,一旦你提交表单,如果你想在默认模式粘结剂能够集合属性正确绑定您的视图模型的命名约定应该得到尊重。