2017-02-09 67 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