ASP.NET MVC BeginCollectionItem问题

时间:2016-01-15 21:47:19

标签: c# .net asp.net-mvc asp.net-mvc-4

我遇到了HTML帮助器BeginCollectionItem的问题。它似乎将项目绑定到视图,但是没有传播更改。

我有一个局部视图,绑定到它的模型是IEnumerable。下面是一个片段。

<tbody>
    @foreach (var entry in Model) {
        <tr>
            @using (Html.BeginCollectionItem("EditedEntries")) {
                <td>@entry.Storeid</td>
                <td>@entry.district</td>
                <td>@Html.EditorFor(x => entry.AdjHrs)</td>
            }
        </tr>
    }
</tbody>

如果我删除foreach它的工作原理,但是我需要使用foreach,因为集合将从Ajax调用返回到部分视图以及表及其成员。

2 个答案:

答案 0 :(得分:3)

BeginCollectionItem旨在使用局部视图。为您的模型创建一个(我假设它的名称为MyModel,您将其命名为部分"_MyModel.cshtml"

@model MyModel
<tr>
    @using (Html.BeginCollectionItem("EditedEntries"))
    {
        <td>@Html.DisplayFor(m => m.Storeid)</td>
        <td>@Html.DisplayFor(m => m.district)</td>
        <td>@Html.EditorFor(m => m.AdjHrs)</td>
    }
</tr>

然后在您的其他部分中,用

替换foreach循环
<tbody>
    @foreach (var entry in Model)
    {
        @Html.Partial("_MyModel", entry)
    }
</tbody>

答案 1 :(得分:0)

所以我设法找到了问题的原因。 HTML帮助程序试图变得智能并自动生成与数据关联的隐藏字段的ID和名称。

生成了什么

n

需要什么

lst

因此,它使用&#39; foreach&#39;的变量名称作为标识符的前缀。我可能只想写自己的帮手。我会在发布时回复。