Html.Editor对于MVC4中的子对象?

时间:2013-03-05 20:36:10

标签: asp.net-mvc asp.net-mvc-3 razor asp.net-mvc-4

我在视图中有以下代码:

@foreach (var parent in Model.Parents)
        {      
            @foreach (var child in parent.Children)
                { 

                 @Html.TextAreaFor(c => child.name)

                }                   
        }

表单中的其他textareas保存正常,但在提交表单时,我的控制器中的POST方法获取一个带有null父字段的viewModel。知道为什么吗?

1 个答案:

答案 0 :(得分:6)

如果您希望绑定集合,则无法使用foreach循环。您必须使用for循环:

@for (int i = 0; i < Model.Parents.Count; i++) {
    @for (int j = 0; j < Model.Parents[i].Children.Count; j++) {
        @Html.TextAreaFor(x => x.Parents[i].Children[j].name)
    }
}

或者你可以使用父母的编辑模板(甚至是儿童的另一个)。这需要您为Parent模型设置模板并将其放在EditorTemplates文件夹中,然后调用它:

@Html.EditorFor(x => x.Parents)

MVC将负责枚举和绑定。然后可以为儿童名单做同样的事情。

这是关于使用它们的mvc教程(我无法找到mvc4版本):http://coding-in.net/asp-net-mvc-3-how-to-use-editortemplates/