對物件清單的 MVC 模型綁定問題進行故障排除
本文解決了 MVC 應用程式中的一個常見問題:模型綁定器無法從表單資料正確填入物件清單。 儘管表單提交看似正確,但症狀是控制器操作中的空白列表。
根本原因:缺索引
核心問題在於表單元素缺乏索引。 如果沒有索引,模型綁定器就無法區分清單中的各個元素。 例如,考慮這種情況:表單最初包含沒有唯一識別碼的元素。
<code><!-- Incorrect: Missing indices --></code>
解決方案:利用編輯器範本
解決方案涉及使用 EditorTemplates 自動產生正確索引的表單元素。這消除了手動索引並確保正確的模型綁定。
實作步驟:
建立 EditorTemplates 資料夾: 在 Views 資料夾中建立一個名為「EditorTemplates」的新資料夾。 此資料夾應與其他視圖檔案位於同一目錄中。
建立強類型視圖: 在 EditorTemplates 資料夾中,建立一個名稱與您的模型類別相符的強類型視圖檔案(例如 PlanCompareViewModel.cshtml
)。
遷移部分視圖內容:將 HTML 內容從原始部分視圖移至這個新建立的 EditorTemplate 中。
利用 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中文網其他相關文章!