c# - ASP.NET MVC BeginCollectionItem 问题

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

我在使用 HTML 帮助程序 BeginCollectionItem 时遇到问题。它似乎将项目绑定(bind)到 View ,但不会传播更改。

我有一个局部 View ,绑定(bind)到它的模型是一个 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 调用返回到部分 View 以及表及其成员。

最佳答案

BeginCollectionItem 设计用于局部 View 。为您的模型创建一个(我假设其名为 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>

关于c# - ASP.NET MVC BeginCollectionItem 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34820416/

相关文章:

javascript - RingCentral 调用管理

c# - 最后在 C# 中阻塞

c# - 带有 IdentityDbContext 和 hasData 播种的 EFcore 创建 IdentityRole

c# - 我可以使用命令行,还是从托管代码运行批处理文件? (。网)

javascript - 如何关闭弹出窗口并将 View 模型返回到先前的 View ?

c# - "Can' t 从类型 "Blah"隐式转换为类型 'string'

.net - 将 CLR 主机注入(inject)正在运行的进程 - 可能吗?

c# - 为什么 Quartz.Net 似乎要求我的项目以完整的 .NET Framework 4 为目标?

asp.net-mvc - MVC 3 - 仅特定用户访问

javascript - 如何将 List<string> 分配给 ViewBag 并在 JavaScript 中使用?