ASP.NET (MVC5) でドロップダウンリストを使う際にリスト内容をDBから取得して表示する方法です。
Visual Studio Community 2015でC#を使っています。
ドロップダウンリストに表示させたいModelは以下のようになっているとします。
public class Server
{
public int ServerId { get; set; }
public string ServerName { get; set; }
}
Controllerでの取得とリストへの設定は以下のように行います。
public ActionResult Create()
{
ViewBag.ServerOptions = db.Servers.Select(s => new SelectListItem
{
Text = s.ServerName,
Value = s.ServerName
});
return View();
}
Viewで表示させるのは以下のように行います。スキャフォールディングで生成したViewの一部です。
<div class="form-group">
@Html.LabelFor(model => model.ServerName, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.ServerName, (IEnumerable<SelectListItem>)ViewBag.ServerOptions, "選択してください", new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.ServerName, "", new { @class = "text-danger" })
</div>
</div>
新規作成時のデフォルト表示は「選択してください」となり、編集時の表示はModelの内容が初期表示され変更する場合はリストから選択可能です。(”Create.cshtml”,”Edit.cshtml”それぞれのViewを上記のように編集する必要があります)
ASP.NETの本として以下がお勧めです。MVC5対応であり、Razor構文での説明のため現在の環境で参考になります。基本的には辞書使用です。
・MVCの基礎の解説~カスタマイズ(ビューヘルパーの自作等)などが書かれている
・デバッグ時に参考になることが書かれている(SQL文のデバッグ表示等)
・DBマイグレーションについて割と詳しく書かれている
・認証についての解説が書かれている