Asp.net-Mvc
MVC3 如何將多個複選框綁定到 ViewModel 中的 1 個屬性
我需要顯示一個複選框列表,可以檢查多個複選框。
當使用者點擊送出時,這些複選框的值需要進入 ViewModel 中的一個屬性……這是我到目前為止得到的……
public class RegisterModel { public List<string> Roles { get; set; } public List<RoleModel> SelectedRoles { get; set; } } public class RoleModel { public string RoleName { get; set; } }在我看來,我正在嘗試這樣做……
@foreach (var role in Model.Roles) { @Html.CheckBoxFor(m => m.SelectedRoles, role.RoleName)@role.RoleName }我收到以下錯誤:
CS0029: Cannot implicitly convert type 'System.Collections.Generic.List<string>' to 'bool'有人可以告訴我我做錯了什麼嗎?
簡單:調整您的視圖模型以匹配您的視圖要求(即顯示某些角色的複選框列表),使用編輯器模板並避免在視圖中編寫循環。
所以:
查看型號:
public class RegisterModel { public List<RoleModel> Roles { get; set; } } public class RoleModel { public string RoleName { get; set; } public bool Selected { get; set; } }控制器:
public class HomeController : Controller { public ActionResult Index() { var model = new RegisterModel { Roles = new[] { new RoleModel { RoleName = "administrator" }, new RoleModel { RoleName = "developer" }, new RoleModel { RoleName = "janitor :-)" }, }.ToList() }; return View(model); } [HttpPost] public ActionResult Index(RegisterModel model) { // at this stage the model will contain all the // information you need return View(model); } }查看 (
~/Views/Home/Index.cshtml):@model RegisterModel @using (Html.BeginForm()) { @Html.EditorFor(x => x.Roles) <button type="submit">OK</button> }編輯器模板 (
~/Views/Home/EditorTemplates/RoleModel.cshtml):@model RoleModel <div> @Html.HiddenFor(x => x.RoleName) @Html.CheckBoxFor(x => x.Selected) @Html.LabelFor(x => x.Selected, Model.RoleName) </div>