我想知道是否有人遇到过像我现在这样的问题。
控制器:
_OpsAdminViewModel.userRoleID = _OpsAdminViewModel.retrieveHighestUserRoleGuidFromUserID(id.Value);
_OpsAdminViewModel.ActiveRoleList = _OpsAdminViewModel.GetActiveRoles();
_OpsAdminViewModel.UserRoleSelectList = new SelectList(_OpsAdminViewModel.ActiveRoleList, "RoleID", "RoleName", _OpsAdminViewModel.userRoleID);查看:
@Html.DropDownListFor(model=>model.selectedRoleID, Model.UserRoleSelectList)现在,这就是它变得非常奇怪的地方。当我在控制器的返回行或视图的DropDownListFor行上放置一个分隔符时,我确实看到我想要选择的值应该被选中。展开UserRoleSelectList对象,显示正确的"SelectedValue“ID,并且在"Results View”中,正确的值为"True“。但是,在呈现页面时,下拉菜单将显示下拉菜单的0位置元素。
发布于 2017-02-10 04:57:58
模型绑定通过绑定到属性的值来工作。当您使用DropDownListFor()时,该方法将在内部构建一个新的IEnumerable<SelectListItem>,并根据您的属性的值设置Selected属性。在您的示例中,selectedRoleID的值与其中一个选项的值不匹配,因此选择了第一个选项(因为必须选择某些选项)。
在将模型传递给视图之前,在GET方法中设置selectedRoleID的值
model.selectedRoleID = _OpsAdminViewModel.userRoleID;
return View(model);并删除SelectList构造函数中的最后一个参数,因为它毫无意义。
https://stackoverflow.com/questions/42146669
复制相似问题