首页 > 后端开发 > C++ > 为什么我的ASP.NET MVC表单阵列属性在提交后属于NULL?

为什么我的ASP.NET MVC表单阵列属性在提交后属于NULL?

Linda Hamilton
发布: 2025-02-02 04:08:14
原创
694 人浏览过

Why is my ASP.NET MVC form array property null after submission?

解决 ASP.NET MVC 表单数组提交问题

在 ASP.NET MVC 中,提交包含对象数组的表单可能会遇到问题。例如:

您的表单包含多行,每行代表数组中的一个项目。您使用 jQuery 动态添加和删除行。但是,提交表单后,模型中的数组属性为空。

解决方案:

要解决此问题,您需要在 for 循环中手动生成数组的控件。这确保了控件使用索引正确命名。

修改后的代码:

视图中:

@using (Html.BeginForm("Save", "ConnectBatchProduct", FormMethod.Post))
{
  ....
  <table>
    ....
    @for(int i = 0; i < Model.BatchProducts.Count; i++)
    {
      <tr>
        <td>@Html.TextBoxFor(m => m.BatchProducts[i].Quantity)</td>
        <td>@Html.TextBoxFor(m => m.BatchProducts[i].BatchName)</td>
        <td>
          <!-- 包含隐藏输入以跟踪项目索引 -->

          <a>
登录后复制

控制器中:

public ActionResult Save(ConnectBatchProductViewModel model)
{
  ....
}
登录后复制

其他注意事项:

如果要动态添加和删除视图中的项目,可以使用 BeginCollectionItem 辅助方法或 HTML 模板。例如,您可以创建一个用于添加新项目的模板:

<tr>
  <td></td>
  <td></td>
  <td>

    <a>
登录后复制

然后,您可以使用 JavaScript 动态将新项目添加到表格中:

$("#addrow").click(function() {
  var index = (new Date()).getTime(); // 唯一的索引
  var clone = $('#NewBatchProduct').clone(); // 克隆 BatchProducts 项目
  // 更新克隆的索引
  clone.html($(clone).html().replace(/\[#\]/g, '[' + index + ']'));
  clone.html($(clone).html().replace(/"%"/g, '"' + index  + '"'));
  $("table.order-list").append(clone.html());
});
登录后复制

以上是为什么我的ASP.NET MVC表单阵列属性在提交后属于NULL?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板