0

我不能List<album>在这个上使用一个,只能在没有编辑标签的视图上使用,我有一个视图工作得很好,但我不能编辑它们的一个列表。

@model IEnumerable<MyMixtapezServerCodeHomePage.Models.album>
@using (Html.BeginForm("FeatureSystem", "album", FormMethod.Post))
{

<table>

    <tr>
        <th>
            @Html.DisplayNameFor(model => model.name)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.feature)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.feature_order)
        </th>
        <th></th>
    </tr>

    @foreach (var item in @Model)
    {

        <tr>
            <td>

                <div class="editor-label">
                    @Html.LabelFor(model => item.name)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => item.name,"album")
                    @Html.ValidationMessageFor(model => item.name)
                </div>
            </td>
            <td>
                <div class="editor-label">
                    @Html.LabelFor(model => item.feature,"album")
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => item.feature)
                    @Html.ValidationMessageFor(model => item.feature)
                </div>
            </td>
            <td>
                <div class="editor-label">
                    @Html.LabelFor(model => item.feature_order)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => item.feature_order,"album")
                    @Html.ValidationMessageFor(model => item.feature_order)
                </div>
            </td>
            <td></td>
        </tr>





    }
    <input type="submit" />
</table>}

控制器

        [HttpPost]
    public ActionResult FeatureSystem(IEnumerable<album> albums)
    {
        foreach (album album in albums)
        {
            if (ModelState.IsValid)
            {
                albumRepository.Update(album);
                albumRepository.SaveChanges();
            }
        }

        return RedirectToAction("Index");
    }

我收到的专辑是空的,为什么?我可以编辑一个列表吗?我只需要这个。

4

2 回答 2

2

在视图中使用 IList 而不是 IEnumerable,并将 foreach 循环替换为 for 循环。

步骤1:

利用

@model IList <MyMixtapezServerCodeHomePage.Models.album>

代替

@model IEnumerable<MyMixtapezServerCodeHomePage.Models.album>

第2步:

利用

@for (var i = 0; i < Model.Count; i++) 

代替

@foreach (var item in @Model)

请参阅如何将 IEnumerable 列表传递给 MVC 中的控制器,包括复选框状态?更多细节。

于 2013-08-06T10:03:43.423 回答
0

我相信这自 mvc3 以来没有改变

因此,要拥有一个可编辑的集合,您必须使用 for 循环,而不是 foreach,否则绑定将不起作用。

@for(var i = 0; i < Model.Count; i++)
 {
    <tr>
        <td>

            <div class="editor-label">
                @Html.LabelFor(model => Model[i].name)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => Model[i].name,"album")
                @Html.ValidationMessageFor(model => Model[i].name)
            </div>
        </td>
        <td>

  ...
}

看看这个,旧的,但我认为不会过时。

于 2013-02-02T21:22:06.680 回答