Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC4中的子对象的Html.editor?_Asp.net Mvc_Asp.net Mvc 3_Razor_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc MVC4中的子对象的Html.editor?

Asp.net mvc MVC4中的子对象的Html.editor?,asp.net-mvc,asp.net-mvc-3,razor,asp.net-mvc-4,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) } } 表单中的其他文本区

我认为有以下代码:

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

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

                }                   
        }

表单中的其他文本区域可以很好地保存,但是当提交表单时,我的控制器中的POST方法会得到一个带有空父字段的viewModel。知道为什么吗?

如果要绑定集合,就不能使用
foreach
循环。您必须对循环使用

@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)
    }
}
MVC将负责枚举和绑定。然后,也可以对子列表执行同样的操作


下面是一个关于使用它们的mvc教程(我找不到mvc4版本):

谢谢Simon。我得到一个错误,因为Children是一个ICollection,而我的viewModel中只有父对象。你知道我如何在Parents中“列出”所有内容,或者以某种方式解决这个问题吗?要么更改为IList,要么使用编辑器模板。编辑器模板可以与IEnumerables配合使用。检查这个答案,了解如何使用:我必须使用两个模板,对吗?一个用于父对象,一个用于子对象?如果父对象是一个列表,则可以使用for循环,然后使用子对象集合的编辑器。如果它们都是ICollection或IEnumerable,则需要为它们使用编辑器模板。
@Html.EditorFor(x => x.Parents)