我需要显示一个复选框列表,可以检查多个复选框.
当用户点击提交时,这些复选框的值需要进入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>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。