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マイグレーションについて割と詳しく書かれている
・認証についての解説が書かれている