如果标题不清楚,请道歉.
我正在尝试从ASP.NET MVC中的表单提交返回我的模型.
我的问题几乎和这个问题一样,只是因为我没有List
一个像以下那样的模型:
public Model { string UserName {get; set;} string Password {get; set;} ListUserRoles {get; set;} }
我需要UserRoles作为管理员在创建新用户时可以选择的复选框.我的问题是,我不确定如何对列表使用'@ Html.CheckBoxFor'.我试过这个:
@for (var i = 0; i < Model.UserRoles.Count();i++ ) { @Html.HiddenFor(model => model.UserRoles[i].RoleID) @Html.CheckBoxFor(model => model.UserRoles[i].Selected) @Html.LabelFor(model => model.UserRoles[i].Name) }
这绝不起作用 - 页面上的每个标签都是"名称",我的列表在POST中是空的.有人可以给我任何指导吗?
请参阅下面的代码,这样您就不需要隐藏角色ID,当您为用户保存所选角色时,也无需遍历所有角色以查看选择了哪个角色.
视图
@foreach (Roles info in Model.UserRoles) { <span> <input type="checkbox" class="checkbox" name="selectedRoles" value="@info.RoleName" id="@infoRoleName" /> <label for="@info.RoleName">@info.RoleName</label> </span> }
行动
[HttpPost] public ActionResult CreateUsers(Model model, string[] selectedRoles) { // }
根本不需要离开Razor.
这对我有用:
for (var i = 0; i < Model.UserRoles.Count(); i++) { var role = Model.UserRoles[i]; @Html.HiddenFor(model => model.UserRoles[i].RoleId) @Html.CheckBoxFor(model => model.UserRoles[i].Selected) @Html.LabelFor(model=> model.UserRoles[i].Name, role.Name) }