Razor 页面中 foreach 循环内的表单

2023-11-29

我有一个标准的 Razor 页面,其中列出了我的数据库中的所有订单。它的编码非常标准:IList<Order>页面模型中的绑定属性,OnPost方法。但是,表中的每条记录都有一个列,其中包含select显示订单当前状态的元素,以及button如果用户决定更改它,则保存新状态。对每行状态进行内联编辑。

Form Preview

所以我有一个foreach在我的页面中循环遍历我的所有订单:

@foreach (var item in Model.Orders)
{
   <tr><td>...</td></tr>
   <tr>
      <td>
         <form method="post" class="form-inline">
            <input type="hidden" value="@item.Id"/>
            <select asp-for="@item.OrderStatusId"
                    class="form-control form-control-sm"
                    asp-items="ViewBag.OrderStatusId"></select>
            <button type="submit" class="btn btn-secondary btn-sm">
               <i class="fas fa-save"></i>
            </button>
         </form>
      </td>
   </tr>
}

如您所见,最后一列是form。我想做的是能够服从我的OnPost方法,订单id(隐藏input表单中的元素)和选定状态(select在元素形式中)。但是,这些参数在方法中始终显示为 null。我猜这与以下事实有关,因为有多个asp-for相同属性名称的元素(每个表单一个 - 每个订单/行),Razor 会感到困惑并且不知道要发送哪一个。

有没有解决的办法?


The foreach你的例子中的循环生成相同的name属性为<select>元素,这解释了为什么 Razor 会感到困惑(而且它也是无效的 HTML)。假设Model.Orders实施IEnumerable,你应该使用for每次迭代的循环和数字索引生成不同的<select>元素名称:

<form method="post" class="form-inline">
@for (int i = 0; i < Model.Orders.Count; i++)
{
   <tr><td>...</td></tr>
   <tr>
      <td>
            <input type="hidden" value="@item.Id"/>
            <select asp-for="Model.Orders[i].OrderStatusId" class="form-control form-control-sm"
                    asp-items="ViewBag.OrderStatusId"></select>
      </td>
   </tr>
}
   <button type="submit" class="btn btn-secondary btn-sm">
      <i class="fas fa-save">Save</i>
   </button>
</form>

Note:我故意把<form>& 提交<button>标签在循环之外,因为不需要创建多个<form>标签(和多个提交按钮)无需设置action里面的属性for循环,除非另有说明。

类似问题:如何使用 asp-for 标签绑定数组?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Razor 页面中 foreach 循环内的表单 的相关文章

随机推荐

  • 使用 PowerShell 打开文件

    是否有命令可以从 Visual Studio 中的包管理器控制台 也称为 PowerShell 打开项目项 例如类文件 当我在解决方案资源管理器中双击该文件时 也会发生同样的情况 我尝试使用Invoke Item但这恰好打开了 Visual
  • 将轴名称添加到图表中 C#

    我正在与winforms使用 C 我使用图表 我想在代码中设置 X 轴和 Y 轴的标题 我试过 chart1 chartarea 0 axisX title xxx 但它不起作用 我不知道为什么 我正在使用网络上的图表控件 并通过以下方式设
  • 为什么Oracle监听器和数据库服务没有运行?

    我刚刚开始接触 Red Hat Linux 7 2 和 Oracle 12c 因此 我上周末致力于尝试看看是否可以在 RHEL 7 2 上支持 Oracle 12c 最后 是的 我能够在 RHEL 7 2 VM 上运行 Oracle 但并非
  • 如何使用nodejs获取mongodb单个文档的大小(以字节为单位)?

    我正在使用 db coll findOne 获取文档 我想使用仅具有 mongo 本地驱动程序的 NodeJS 获取文档的大小 以字节为单位 这可能吗 可以使用BSON 这是 mongodb 驱动程序的依赖项 var bson requir
  • 在 Os.Rename 中强制覆盖

    如果另一个文件已经存在 是否可以强制重命名 os rename 来覆盖另一个文件 例如 在下面的代码中 如果文件 Tests csv 已存在 它将被 Tests txt 文件替换 也已重命名为 Tests csv os rename C U
  • 如何将数组列表放入列表框中

    因此 我在一项作业上需要帮助 并且我已经尝试解决它一个多星期了 但我需要帮助将数组列表放入列表框中 That s what the GUI should look like in the end all the information ha
  • 从 Swing GUI 编译并运行 Java 代码

    我正在用 Java Swing 构建一个 GUI 并且必须从中执行 Java 代码 为了测试简单的代码 比如用 Java 打印 HelloWorld 就可以了 我看过论坛问题 我只知道我必须调用操作系统 我使用的是Windows7 来执行该
  • 初始化网格时,同一 DataGridView 列中的控件不呈现

    好坏 我在 DataGridView 列中托管不同的控件 当我在初始化网格的同时添加控件时 控件显示为文本框 不好 如果我在 DataGridView 初始化后添加控件 控件会正确呈现 好 public Form1 InitializeCo
  • jQuery 在 for 循环中动态增加变量名称

    是否可以将 i 添加到 for 循环内的 var 中 如果语法错误 它看起来像下面的代码 for i 1 i lt countProjects i var test i otherVar something Thanks 为此最好使用数组
  • 反射 - 获取 lambda 表达式内的方法调用列表

    我正在尝试找到一种方法来获取 C 3 5 中 lambda 表达式内的方法调用列表 例如 在下面的代码中 我想使用方法 LookAtThis Action a 来分析 lambda 表达式的内容 换句话说 我希望 LookAtThis 返回
  • 如何使用散景后端控制全息视图中的(活动)工具

    如何控制在某个环境中使用 激活哪些工具holoviews情节与bokeh后端 我见过这个答案 但仅此而已adds一个新的活跃工具 它不会阻止任何其他工具 例如平移 处于活动状态 对于一个具体的例子 假设我只想要悬停工具 我会尝试这样做 im
  • 项目的选择器不是另一个项目的后代

    给定下面的 HTML 您将如何选择所有不是 itemcontainer 后代的 name s 类似于 group header name not 源自 itemcontainer 我知道这可以通过 jQuery 或添加其他类很容易地完成 但
  • cv2.getOptimalNewCameraMatrix 在某些数据集上返回 [0,0,0,0] 的 ROI

    我正在使用 OpenCV 2 x 开发一个 Python 程序 下面是我的代码摘录 该代码在已捕获和保存的文件列表上运行 所有图像都是80 x 60 8 位灰度图像 我得到的最好的投资回报率是 1 6 73 49 对于一台相机 但我的另一台
  • 在Java中将base64字符串转换为图像

    我有一个通过 JSON 字符串发送给我的图像 我想在我的 Android 应用程序中将该字符串转换为图像 然后显示该图像 JSON 字符串如下所示 data image png base64 iVBORw0KGgoAAAANSUhEUgAA
  • WinAPI C++ 客户端在读取之前检测匿名管道上的写入

    我正在编写一个 C Windows 客户端控制台应用程序 该应用程序从 STDIN 上的匿名管道读取数据 我希望能够按如下方式使用我的程序 echo input text here my app exe 并在应用程序中使用通过管道输入的文本
  • 为什么我的 JLabel 没有显示

    我正在调用此方法 称为检查我的抽象类之一 但由于某种原因 我添加到 JPanel 面板 的 JLabel 问题 没有显示 为什么会出现这种情况 任何解释 我都使用重绘和验证方法 但仍然没有显示任何内容 您遇到的问题是您阻塞了事件调度线程 阻
  • 了解 Java 中的一个大公司项目 [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 理解java大公司项目的最好方法是什么 关于这个主题 有一个不错的播客 采访 Dave Thomas 务实的程序员 Dave here 他称之为 软件考古学 由于许多不同的原因 组织经常失
  • 将强类型属性名称作为参数传递

    我有一个收藏IEnumerable
  • mvc4 中 Global.asax 中的会话超时重定向

    我试图检测会话何时结束 然后在我的全局 asax 文件中完成此操作后将用户重定向到主页 我正在使用我发现的下面的代码here 全局 asax protected void Session Start if Context Session n
  • Razor 页面中 foreach 循环内的表单

    我有一个标准的 Razor 页面 其中列出了我的数据库中的所有订单 它的编码非常标准 IList