web-dev-qa-db-ja.com

ViewDataからドロップダウンにデータを入力する

コントローラにviewdataがあり、リストが入力されています。

List<employee> tempEmpList = new List<employee>();
tempEmpList = context.employees.ToList();
ViewData["tempEmpList"] = tempEmpList;

これを自分のビューに渡します。問題は、viewdataリストのコンテンツをドロップダウンリストに配置するにはどうすればよいですか?

表示データは.nameリストアイテムから。

Viewdataでforeachを実行して選択リストを作成できることは知っていますが、これは少し時間がかかるようです

DropDownList htmlヘルパーを使用できます:

@Html.DropDownList("SelectedEmployee", 
    new SelectList((IEnumerable) ViewData["tempEmpList"]), "Id", "Name")

SelectListコンストラクターでは、Employeeクラスのどのプロパティをドロップダウン内のテキストと値の両方として使用するかを指定できます(例: "Id"、 "Name")

ドロップダウンの名前("SelectedEmployee")は、データをサーバーにポストバックするときに使用されます。

19
nemesv

通常の方法でViewDataを設定し、Postにバインドされるモデルのプロパティにマップするキー名を割り当てます。

ViewData["ModelPropertyName"] = new SelectList(...)

次に、ビューにHtml.DropDownList ..を追加するだけです。

@Html.DropDownList("ModelPropertyName")
7
JDandChips

ぜひお試しください。 MVC5で試しました

@Html.DropDownList("SelectedEmployee", new SelectList((System.Collections.IEnumerable) ViewData["tempEmpList"],"id","Name"))

3
Sapnandu