DropDownListFor问题

时间:2017-02-09 20:54:13

标签: c# asp.net asp.net-mvc

我想知道是否有人遇到过我现在遇到的问题。

控制器:

_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位元素。

1 个答案:

答案 0 :(得分:0)

模型绑定通过绑定到属性的值来工作。使用DropDownListFor()时,方法会在内部构建新的IEnumerable<SelectListItem>,并根据您的属性值设置Selected属性。在您的情况下,selectedRoleID的值与其中一个选项的值不匹配,因此选择了第一个选项(因为必须要有)。

在将模型传递给视图

之前,在GET方法中设置selectedRoleID的值
model.selectedRoleID = _OpsAdminViewModel.userRoleID;
return View(model);

并删除SelectList构造函数中的最后一个参数,因为它没有意义。