2016-09-20 63 views
0

我在剃刀以下聲明:下拉列表中的Razor默認選擇?

@Html.DropDownList("SelectedRole", ViewBag.RolesEdit as List<SelectListItem>, ViewBag.CurrentUserRole as string, new { @class = "form-control" }),這導致下拉,看起來在頁面加載如下:

enter image description here

當我點擊下拉箭頭,我看到:

enter image description here

所以基本上,用戶角色是重複的。我怎樣才能改變這一點,以便它不是創建一個新的重複元素,而是默認它應該是的元素?基本上,因爲ViewBag.RolesEdit是一個列表,並且ViewBag.CurrentUserRole保證有一個元素等於上述列表中的一個項目,我如何循環訪問列表來比較對方並設置默認值?

謝謝。

+0

你可能想看看這個【答案】(HTTP: //stackoverflow.com/a/37819577/296861)。 – Win

+0

將CurrentUserRole設置爲文本RegularUser還是設置爲對應於RegularUser的值? –

+0

@ stephen.vakil它被設置爲控制器中的'text',如下所示:'ViewBag.CurrentUserRole = user.UserRole();''user'是Identity框架中的一種用戶類型。 – ITWorker

回答

1

當使用Html.DropDownList helper方法,要設置一個選項,以預先選定的,你只需要設置該選項所涉及的ViewBag字典,用於生成SELECT元素相同的密鑰的

@Html.DropDownList("SelectedRole", ViewBag.RolesEdit as List<SelectListItem>) 

假設你的操作方法是設置ViewBag.SelectedRole您要選擇該選項的value

ViewBag.RolesEdit= new List<SelectListItem>{  
    new SelectListItem { Value="Administrator", Text="Administrator"}, 
    new SelectListItem { Value="Employees", Text="Employees"}, 
    new SelectListItem { Value="RegularUser", Text="Regular User"}, 
} 
ViewBag.SelectedRole ="RegularUser"; 
return View(); 

如果你喜歡使用Html.DropDownListFor helper方法有一個強類型的視圖,視圖模型,你可以按照這個帖子

What is the best ways to bind @Html.DropDownListFor in ASP.NET MVC5?

+0

謝謝,這工作。我用'ViewBag.SelectedRole = user.UserRole();'而不是像你的答案那樣硬編碼。 – ITWorker