首頁 > 後端開發 > C++ > 為什麼我的ASP.NET MVC表單陣列屬性在提交後屬於NULL?

為什麼我的ASP.NET MVC表單陣列屬性在提交後屬於NULL?

Linda Hamilton
發布: 2025-02-02 04:08:14
原創
602 人瀏覽過

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

解決 ASP.NET MVC 表單數組提交問題

在 ASP.NET MVC 中,提交包含對像數組的表單可能會遇到問題。例如:

您的表單包含多行,每行代表數組中的一個項目。您使用 jQuery 動態添加和刪除行。但是,提交表單後,模型中的數組屬性為空。

解決方案:

要解決此問題,您需要在 for 循環中手動生成數組的控件。這確保了控件使用索引正確命名。

修改後的代碼:

視圖中:

<code class="language-csharp">@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></code>
登入後複製

控制器中:

<code class="language-csharp">public ActionResult Save(ConnectBatchProductViewModel model)
{
  ....
}</code>
登入後複製

其他注意事項:

如果要動態添加和刪除視圖中的項目,可以使用 BeginCollectionItem 輔助方法或 HTML 模板。例如,您可以創建一個用於添加新項目的模板:

<code class="language-html"><tr>
  <td></td>
  <td></td>
  <td>

    <a></code>
登入後複製

然後,您可以使用 JavaScript 動態將新項目添加到表格中:

<code class="language-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());
});</code>
登入後複製

以上是為什麼我的ASP.NET MVC表單陣列屬性在提交後屬於NULL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板