c# – 使用非布尔值的MVC CheckBoxList模型绑定
我想将List绑定到CheckBox并获取所选值.我需要显示两个这样的Checkbox表,并且必须检索这两个ID.
下面是我的ViewModel public partial class ViewModel_Role_Security { public List<Roles> oRoleMaster { get; set; } public List<Securities> oSecurityMaster { get; set; } } 所有这三个都有这两个值 通过使用此ViewModel,我使用以下方法绑定这些项目… public ActionResult AddingRoleSecurity() { ListRoles = new List<Roles>(); ListSecurities = new List<Securities>(); //And then populate them with data ... var model = new ViewModel_Role_Security(); model.oRoleMaster = ListRoles; model.oSecurityMaster = ListSecurities; return View(model); } 我对应的cshtml文件是.. @model KnackWFM.BusinessEntities.ViewModel_Role_Security @using (Html.BeginForm()) { <div class="contentsecurity"> <div class="User_role"> <p class="Security_role">User Role</p> @for (int i = 0; i < Model.oRoleMaster.Count; i++) { <input id="@Model.oRoleMaster[i].RoleID" name="@Model.oRoleMaster[i].RoleName" type="checkbox" value="@(Model.oRoleMaster[i].RoleName)" /> <label for="@Model.oRoleMaster[i].RoleID">@Model.oRoleMaster[i].RoleName</label> <br /> @Html.CheckBoxFor(Model.oRoleMaster[i].RoleID.selec) } </div> <div class="User_Page"> <p class="Security_role">Role Security</p> @for (int i = 0; i < Model.oSecurityMaster.Count; i++) { <input id="@Model.oSecurityMaster[i].SecurityID" name="@Model.oSecurityMaster[i].SecurityName" type="checkbox" value="@(Model.oSecurityMaster[i].SecurityName)" /> <label for="@Model.oSecurityMaster[i].SecurityID">@Model.oSecurityMaster[i].SecurityName</label> <br /> } </div> <div class="bottombuttonsecurity"> <button type="submit" id="btnSave" name="Command" value="Save" style="background-color: #3d3c4c;border-radius: 8px;color: white;padding: 5px;border: 1px solid #3d3c4c;">Save</button> </div> </div> } 我得到以下输出, 我想将选中的值作为模型. 我有这样的HttpPost方法,但它返回null值. [HttpPost] public ActionResult AddingRoleSecurity(ViewModel_Role_Security model) { return View(); } 请告诉我如何获取模型中的已检入值? 非常感谢你! 解决方法
只是为了充实我上面的评论……
对于checkboxList – viewmodel应包含标识符属性和布尔选择属性.如果它尚未扩展或创建新的ViewModel类以实现此目的 – 将现有模型映射到此特定视图模型. 即 – 您的模型类 public class UserRole { public int RoleID {get; set;} public string RoleName {get; set;} public bool Selected {get; set;} } public class UserSecurity { public int SecurityID {get; set;} public string SecurityName {get; set;} public bool Selected {get; set;} } public class UserRoleAndSecurityModel { public List<UserRole> RoleMaster {get; set;} public List<UserSecurity> SecurityMaster {get; set;} } 你的观点: @model UserRoleAndSecurityModel @using (Html.BeginForm()) { <div class="contentsecurity"> <div class="User_role"> <p class="Security_role">User Role</p> @for (int i = 0; i < Model.RoleMaster.Count; i++) { @Html.CheckBoxFor(m => m.RoleMaster[i].Selected) @Html.HiddenFor(m => m.RoleMaster[i].RoleId) @Html.LabelFor(m => m.RoleMaster[i].Selected,Model.RoleMaster[i].RoleName) <br /> } </div> <div class="User_Page"> <p class="Security_role">Role Security</p> @for (int i = 0; i < Model.SecurityMaster.Count; i++) { @Html.CheckBoxFor(m => m.SecurityMaster[i].Selected) @Html.HiddenFor(m => m.SecurityMaster[i].SecurityId) @Html.LabelFor(m => m.SecurityMaster[i].Selected,Model.SecurityMaster[i].SecurityName) <br /> } </div> <div class="bottombuttonsecurity"> <button type="submit" id="btnSave" name="Command" value="Save" style="background-color: #3d3c4c;border-radius: 8px;color: white;padding: 5px;border: 1px solid #3d3c4c;">Save</button> </div> </div> 你的控制器现在也应该使用上面的新型号了! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |