在MVC應用程式中,包含物件清單的表單無法正確將清單提交到控制器。提交表單後,控制器接收到的物件清單為空。
問題源自於表單元素中缺少列表項的索引。模型綁定器需要索引來區分清單中的元素。
為了解決這個問題,請使用範本而不是局部視圖。
1. 建立編輯器範本
在視圖資料夾下的「EditorTemplates」資料夾中,建立一個名為「PlanCompareViewModel.cshtml」的編輯器模板。將以下程式碼放入模板中:
<code>@model PlanCompareViewModel <div> @Html.HiddenFor(p => p.PlanID) @Html.HiddenFor(p => p.CurrentPlan) @Html.CheckBoxFor(p => p.ShouldCompare) </div></code>
2. 修改父視圖
如下更新父視圖:
<code>@model IEnumerable<plancompareviewmodel> @using (Html.BeginForm("ComparePlans", "Plans", FormMethod.Post, new { id = "compareForm" })) { <div> @Html.EditorForModel() </div> }</code>
DisplayTemplates和EditorTemplates會自動為集合處理索引,確保模型綁定器建立正確的物件清單。
以上是為什麼我的 MVC 表單無法發布物件清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!