我想知道是否有人遇到过我现在遇到的问题。
控制器:
_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)
现在,这里变得非常奇怪。当我在Controller的Return行或View的DropDownListFor行上放置一个中断时,我确实看到应该选择我想要选择的值。展开UserRoleSelectList对象,显示正确的“SelectedValue”ID,在“结果视图”中,正确的值对于选定的值为“True”。但是,在渲染页面时,下拉菜单会显示下拉菜单的0位元素。
答案 0 :(得分:0)
模型绑定通过绑定到属性的值来工作。使用DropDownListFor()
时,方法会在内部构建新的IEnumerable<SelectListItem>
,并根据您的属性值设置Selected
属性。在您的情况下,selectedRoleID
的值与其中一个选项的值不匹配,因此选择了第一个选项(因为必须要有)。
在将模型传递给视图
之前,在GET方法中设置selectedRoleID
的值
model.selectedRoleID = _OpsAdminViewModel.userRoleID;
return View(model);
并删除SelectList
构造函数中的最后一个参数,因为它没有意义。