ASP.NET MVC5:想要使用模型绑定更新集合中的多个项目

2024-06-23

所以我有一个用户对象的集合,它应该是可批量编辑的(同时编辑许多用户)。我使用实体框架将用户输入保存到数据库中。

控制器方法从表单获取的集合为 null。为什么? 另外,BindAttribute 是否可以像我的代码中那样与集合一起使用?

View:

@model IEnumerable<Domain.User>
@using (Html.BeginForm("UpdateUsers", "Users"))
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)
    foreach (var item in Model)
    {
        @Html.HiddenFor(modelItem => item.Id)
        @Html.EditorFor(modelItem => item.FirstName)
        @Html.ValidationMessageFor(model => item.FirstName)
        @Html.EditorFor(modelItem => item.LastName)
        @Html.ValidationMessageFor(model => item.LastName)
        @Html.EditorFor(modelItem => item.Birth)
        @Html.ValidationMessageFor(model => item.Birth)
    }

    <input type="submit" value="Update user data"/>
}

控制器:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult UpdateUsers([Bind(Include = "Id,FirstName,LastName,Birth")] IEnumerable<User> users)
{
    if (ModelState.IsValid)
    {
        foreach (User u in users)
        {
            db.Entry(u).State = EntityState.Modified;
        }
        db.SaveChanges();
    }

    return RedirectToAction("EditUsers");
}

你需要用一个索引你的集合for而不是一个foreach为了让 ModelBinder 能够拾取它:

for (var i = 0 ; i < Model.Count(); i++)
    {
        @Html.HiddenFor(modelItem => modelItem[i].Id)
        @Html.EditorFor(modelItem => modelItem[i].FirstName)
        @Html.ValidationMessageFor(modelItem => modelItem[i].FirstName)
        @Html.EditorFor(modelItem => modelItem[i].LastName)
        @Html.ValidationMessageFor(modelItem => modelItem[i].LastName)
        @Html.EditorFor(modelItem => modelItem[i].Birth)
        @Html.ValidationMessageFor(modelItem => modelItem[i].Birth)
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET MVC5:想要使用模型绑定更新集合中的多个项目 的相关文章

随机推荐

  • Thread 内调用协程

    是否可以使线程运行方法异步 以便它可以在其中执行协程 我意识到我正在混合范例 我正在尝试集成使用协程的第三方库 而我的项目使用线程 在考虑更新我的项目以使用协程之前 我想探索在线程中执行协程 下面是我的示例用例 其中我有一个线程 但我想从线
  • 无需重新加载 iframe 即可对列表进行排序

    如何在不重新加载 li 内的 iframe 的情况下对列表进行排序 appendChild 使 iframe 重新加载
  • 如何使用 HP-UX shell 脚本将简单的文本文件作为附件发送?

    我需要在 HP UX 中使用 shell 脚本发送一封带有文本文件作为附件的电子邮件 我没有安装mutt 我正在使用以下命令 但它在电子邮件正文中发送文件内容 我希望将其作为附件 mailx s Report email protected
  • 按组从出现位置向后填充值

    Problem 如何在出现某个值之前向后填充组中的所有行 我并不是想使用 NA 或缺失值来填充zoo na locf 在下面 我想在每个 ID 组出现 1 00 之前用 1 00 填充 A 中的所有先前行 理想情况下使用dplyr Inpu
  • 当 RotationY > 60 时,CardView 显示伪影

    我正在尝试使用 Android 的新功能CardView在旋转动画中 然而 当CardView s rotationY属性设置得足够高 在 Lollipop 设备上会发生一些非常糟糕的事情 下面是一些很容易编译的示例代码 MainActiv
  • 为什么打印出来是这样的

    下面的代码片段中的迭代是如何进行的 a 0 1 2 3 b for a 1 in a b append a 1 print b Output is 0 1 2 2 Python for循环使用赋值 如果使用不当 可能会导致有趣的结果 您的示
  • 滚动时大型 UICollectionViewCell 停止显示

    相同的行为UICollectionView正如这里所描述的 已经导致这个问题 https stackoverflow com questions 13016302 large cells in a uicollectionview gett
  • 错误运算符 new[] :函数不接受 1 个参数

    我有重载运算符的代码new 下面的代码在 Linux gcc4x 下运行良好 但在 Windows Visual C 2008 Express Edition 下运行不佳 Visual Studio 2008 Express Edition
  • 通过浏览器以编程方式确定 DPI?

    我想以编程方式确定用户显示器的 DPI 以便以精确的单位数 厘米 英寸 显示网页 我知道这是一个奇怪的请求 这是一个可视化研究项目 它是一种控制 目前 我们通过让用户将信用卡放置在屏幕上并将可调整大小的 div 通过 Mootools 与真
  • 如何从顶点图表中删除图例、标签和所有数字

    我已经尽力了 如果有人能帮助我 那就太好了 我希望图表上的数字和图例消失 图例和数据标签可以通过以下方式禁用 const options dataLabels enabled false legend show false EDIT 如果您
  • 将斯坦福情感分析与java集成时出现错误

    我正在使用斯坦福情感 nlp 库和 java 进行情感分析 但是当我执行代码时 我收到错误 无法弄清楚 我的代码如下 package com nlp import java util Properties import edu stanfo
  • Chrome Sockets API 在 Chrome 操作系统(与 Ubuntu、Windows)上的行为有何不同?

    我有一个示例 Chrome 打包应用程序 它使用 Chrome 套接字 API 来执行 DNS 服务发现 繁重的工作是从这里的例子中借来的 https github com GoogleChrome chrome app samples t
  • 如何获取今天或昨天的时间 17:00:00?

    如果今天的 17 00 00 已经过去 那么它应该是今天的日期 否则 昨天的日期 今天的时间我得到了 test datetime datetime now replace hour 17 minute 0 second 0 microsec
  • 如何使用 PyQt4 禁用窗口最大化图标?

    我想知道如何禁用pyqt4中的窗口最大化按钮 我目前使用 QWidget setFixedSize self QSize 来防止用户窗口调整大小 但是最大化按钮仍然处于启用状态 按下时会导致应用程序移动到屏幕的左上角 我基本上想复制 Win
  • 如何避免以明文形式存储 tomcat 的 server.xml 数据源资源定义的密码?

    tomcat中的资源定义server xml看起来像这样
  • Swift 3 IF 条件中的可选链接错误?

    这段代码在 Swift 2 3 中运行得很好 我不明白为什么我必须解开TestClass检查数字是否大于 4 这是链接选项的全部要点 以节省额外的调用 现在为了使这项工作正常进行 我必须检查是否testClass nil 或使用隐式解包if
  • Android远程数据库

    我正在开发一个需要连接到中央数据库的 Android 应用程序 用户应该能够通过应用程序访问记录并将记录添加到数据库中 数据本身相当简单 每条记录都由许多文本字段组成 该数据库将专门为应用程序开发 并且只需要通过应用程序进行访问 初步阅读似
  • 带有 kableExtra 的表格标题

    我想包含表的标题和列的正确名称 我该如何使用 kableExtra 函数来做到这一点 kable tab 211 220 gt kable styling bootstrap options c striped hover enter im
  • 通过多个换行符分割文件

    假设您有以下输入文件 Some text It may contain line breaks Some other part of the text Yet an other part of the text 并且您想要迭代每个文本部分
  • ASP.NET MVC5:想要使用模型绑定更新集合中的多个项目

    所以我有一个用户对象的集合 它应该是可批量编辑的 同时编辑许多用户 我使用实体框架将用户输入保存到数据库中 控制器方法从表单获取的集合为 null 为什么 另外 BindAttribute 是否可以像我的代码中那样与集合一起使用 View