2017-02-09 63 views
0

我想知道如果有人曾经遇到像我目前有问题。DropDownListFor问题

控制器:

_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,并在“结果视图”中为正确的值选择“True”。但是,当页面呈现时,下拉菜单显示下拉菜单的0位元素。

回答

0

模型绑定通过绑定到您的财产的价值。当您使用DropDownListFor()时,方法会在内部建立一个新的IEnumerable<SelectListItem>并根据您的属性值设置Selected属性。在你的情况下,selectedRoleID的值与其中一个选项的值不匹配,所以选择第一个选项(因为必须是)。

传递模型前视图

model.selectedRoleID = _OpsAdminViewModel.userRoleID; 
return View(model); 

,并因为它的毫无意义的SelectList构造函数删除最后一个参数设置的selectedRoleID值在GET方法。

+0

这很容易!我通过在视图模型中使用两个不同的属性(userRoleID和selectedRoleID)来使事情复杂化。现在已经修复了。谢谢!!! – Anonymous3521