問題:
需要將項目列表傳遞到視圖中,通過複選框進行選擇,並檢索選中的項目。但是,手動生成HTML輸入會導致未選中的輸入無法回傳。實現此功能的最佳實踐是什麼?
答案:
避免手動生成HTML
不建議在這種情況下手動生成HTML。現代MVC框架(如ASP.NET Core)提供強類型HTML輔助方法,用於高效可靠的模型綁定。
創建ViewModel
為了在視圖中表示模型數據,創建一個ViewModel類,該類與領域模型非常相似,但包含用於復選框選擇的附加屬性。例如:
public class UserViewModel { public int ID { get; set; } public string Name { get; set; } public List<RoleViewModel> Roles { get; set; } } public class RoleViewModel { public int ID { get; set; } public string Name { get; set; } public bool IsSelected { get; set; } }
填充ViewModel
在GET操作方法中,使用領域模型中的數據填充ViewModel,包括根據角色當前是否分配給用戶來設置每個角色的IsSelected屬性。
在視圖中使用HTML輔助方法
在視圖中,使用強類型HTML輔助方法來呈現複選框輸入。這確保了正確的模型綁定並簡化了代碼。
@Html.HiddenFor(m => m.ID) @Html.DisplayFor(m => m.Name) @foreach (var role in Model.Roles) { @Html.HiddenFor(m => role.ID) @Html.CheckBoxFor(m => role.IsSelected) @Html.LabelFor(m => role.IsSelected, role.Name) }
在POST操作方法中處理選中的角色
在POST操作方法中,ViewModel將自動綁定到請求。然後,您可以遍歷Roles集合併檢查IsSelected屬性以確定選擇了哪些角色。
以上是如何在ASP.NET Core View中有效地通過和檢索選定的複選框?的詳細內容。更多資訊請關注PHP中文網其他相關文章!