2016-09-20 9 views
0

私はカミソリで次の宣言があります。ドロップダウンリストの面倒なデフォルト選択?

@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は、そのリスト内の1つの項目と同じ要素を持つことが保証されています。リストをループして、どのようにしてデフォルトを設定するのですか?

ありがとうございます。

+0

この記事に従うことができますが、この[答え]で見たいと思うかもしれません(のhttp: //stackoverflow.com/a/37819577/296861)。 – Win

+0

'CurrentUserRole'は' text'''RuleularUser'に設定されているか '' RegularUser''に対応する '' value''に設定されていますか? –

+0

@ stephen.vakilコントローラの 'text'に次のように設定されます:' ViewBag.CurrentUserRole = user.UserRole(); 'ここで' user'はIdentityフレームワークのユーザの一種です。 – ITWorker

答えて

1

事前に選択される1つのオプションを設定するには、Html.DropDownListヘルパーメソッドを使用している場合、あなただけのSELECT要素を生成するのに使用したのと同じキーでViewBag辞書にそのオプションのを設定する必要があります。

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

あなたのアクションメソッドは、選択したいオプションのvalueViewBag.SelectedRoleを設定していると仮定。

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ヘルパーメソッドを使用する場合は、あなたが

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

+0

ありがとう、これは働いた。私は 'ViewBag.SelectedRole = user.UserRole();'を答えのようにハードコーディングする代わりに使用しました。 – ITWorker

関連する問題