ASP.NETのドロップダウンリストのリストをDBから取得して表示

Pocket
LinkedIn にシェア
LINEで送る
Facebook にシェア

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