我遇到了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调用返回到部分视图以及表及其成员。
答案 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;的变量名称作为标识符的前缀。我可能只想写自己的帮手。我会在发布时回复。