首頁 >後端開發 >C++ >為什麼我的 MVC 模型綁定器無法從表單填入物件清單?

為什麼我的 MVC 模型綁定器無法從表單填入物件清單?

Patricia Arquette
Patricia Arquette原創
2025-01-21 14:27:11180瀏覽

Why is My MVC Model Binder Failing to Populate a List of Objects from a Form?

對物件清單的 MVC 模型綁定問題進行故障排除

本文解決了 MVC 應用程式中的一個常見問題:模型綁定器無法從表單資料正確填入物件清單。 儘管表單提交看似正確,但症狀是控制器操作中的空白列表。

根本原因:缺索引

核心問題在於表單元素缺乏索引。 如果沒有索引,模型綁定器就無法區分清單中的各個元素。 例如,考慮這種情況:表單最初包含沒有唯一識別碼的元素。

<code><!-- Incorrect: Missing indices --></code>

解決方案:利用編輯器範本

解決方案涉及使用 EditorTemplates 自動產生正確索引的表單元素。這消除了手動索引並確保正確的模型綁定。

實作步驟:

  1. 建立 EditorTemplates 資料夾: 在 Views 資料夾中建立一個名為「EditorTemplates」的新資料夾。 此資料夾應與其他視圖檔案位於同一目錄中。

  2. 建立強類型視圖: 在 EditorTemplates 資料夾中,建立一個名稱與您的模型類別相符的強類型視圖檔案(例如 PlanCompareViewModel.cshtml)。

  3. 遷移部分視圖內容:將 HTML 內容從原始部分視圖移至這個新建立的 EditorTemplate 中。

  4. 利用 EditorForModel(): 修改您的父視圖以使用 EditorForModel() 輔助方法。 該助手將根據您的模型自動渲染表單元素,並正確索引。

<code class="language-csharp">@model IEnumerable<plancompareviewmodel>
@using (Html.BeginForm("ComparePlans", "Plans", FormMethod.Post, new { id = "compareForm" }))
{
    <div>
        @Html.EditorForModel()
    </div>
}</code>

透過採用此方法,模型綁定器將正確解釋並填入控制器操作中的物件清單。 EditorForModel() 幫助器動態地為每個元素產生必要的索引,解決了綁定問題。

以上是為什麼我的 MVC 模型綁定器無法從表單填入物件清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn