首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET MVC BeginCollectionItem问题

ASP.NET MVC BeginCollectionItem问题
EN

Stack Overflow用户
提问于 2016-01-15 21:47:18
回答 2查看 1.7K关注 0票数 4

我对helper BeginCollectionItem有一个问题。它似乎将项绑定到视图,但更改没有被传播。

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

代码语言:javascript
复制
<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调用返回到部分视图。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-16 00:14:46

BeginCollectionItem是设计用来处理部分视图的。为您的模型创建一个(我假设它的名称为MyModel,您将命名为部分"_MyModel.cshtml")

代码语言:javascript
复制
@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循环替换为

代码语言:javascript
复制
<tbody>
    @foreach (var entry in Model)
    {
        @Html.Partial("_MyModel", entry)
    }
</tbody>
票数 3
EN

Stack Overflow用户

发布于 2016-01-15 22:42:11

所以我设法找出了问题的原因。HTML助手试图保持智能并自动生成与数据关联的隐藏字段的ID和名称。

所产生的

代码语言:javascript
复制
<tr role="row" class="odd">
<input type="hidden" name="EditedEntries.index" autocomplete="off" value="a2a18da0-528f-4b10-92c1-4a8ba7038dde">
    <td class="sorting_1">1</td>
    <td>1</td>
    <td>
        <input data-val="true" data-val-number="The field AdjHrs must be a number." data-val-required="The AdjHrs field is required." 
        id="EditedEntries_a2a18da0-528f-4b10-92c1-4a8ba7038dde__entry_AdjHrs" name="EditedEntries[a2a18da0-528f-4b10-92c1-4a8ba7038dde].entry.AdjHrs" type="text" value="0">
    </td>

需要的是什么

代码语言:javascript
复制
<tr role="row" class="odd">
<input type="hidden" name="EditedEntries.index" autocomplete="off" value="a2a18da0-528f-4b10-92c1-4a8ba7038dde">
    <td class="sorting_1">1</td>
    <td>1</td>
    <td>
        <input data-val="true" data-val-number="The field AdjHrs must be a number." data-val-required="The AdjHrs field is required." 
        id="EditedEntries_a2a18da0-528f-4b10-92c1-4a8ba7038dde_AdjHrs" name="EditedEntries[a2a18da0-528f-4b10-92c1-4a8ba7038dde].AdjHrs" type="text" value="0">
    </td>

因此,它以“foreach”的变量名作为标识符的前缀,我可能只需编写自己的助手。当我回来的时候我会发帖。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34820416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档