mvc中的批量更新

时间:2015-03-27 08:27:20

标签: c# asp.net-mvc

我想更新用户列表,在我的控制器中,我已经返回了用户列表

return View("usersList", user);

并且在视图中我使用

@using (Html.BeginForm("usersList", "UserManagement"))
{
    @Html.EditorFor(model => model, "tbl_UserList");
}

在编辑器模板中我使用&#t; tbl_UserList.cshtml'如下

@model IList<tbl_Users>

@using (Html.BeginForm())
{
<table>
    <tr>
    <th>
        @Html.DisplayNameFor(model => model[0].FirstName)
    </th>
    <th>
        @Html.DisplayNameFor(model => model[0].LastName)
    </th>
    <th>
        @Html.DisplayNameFor(model => model[0].Email)
    </th>

    </tr>

@foreach (var item in Model) {
    <tr>
    <td>
        @Html.EditorFor(modelitem => item.FirstName)
    </td>
    <td>
        @Html.EditorFor(modelItem => item.LastName)
    </td>
    <td>
        @Html.EditorFor(modelItem => item.Email)
    </td>
    </tr>
}

</table>

<input id="subButton" type="submit" value="submit" title="submit data" />
}

并在控制器中

[HttpPost]
public ActionResult UserList(List<tbl_Users> users)
{
    //..
}

这里控制器中的用户为空,我该如何解决这个问题&gt; 感谢

1 个答案:

答案 0 :(得分:2)

EditorTemplate更改为

@model tbl_Users
<tr>
  <td>@Html.EditorFor(m => m.FirstName)</td>
  <td>@Html.EditorFor(m => m.LastName)</td>
  <td>@Html.EditorFor(m => m.Email)</td>
</tr>

并将其重命名为tbl_Users.cshtml

然后在主视图中

@model IList<tbl_Users>
@using (Html.BeginForm("usersList", "UserManagement"))
{
  <table>
    <thead>
      <tr>
        <td>@Html.DisplayNameFor(m => m.FirstName)</td>
        ....
      </tr>
    </thead>
    <tbody>
      @Html.EditorFor(m => m); // do not specify a name
    </tbody>
  </table>
}

请注意,您当前的foreach循环正在生成重复的id属性(无效的html)和重复的name属性,这些属性不会绑定到集合(在了解之前和之后检查html) )。