書籍転載:ASP.NET MVC 5 実践プログラミング
ASP.NET MVC 5.1: 列挙型から選択ボックスを生成する - EnumDropDownListメソッド[Razor]
ASP.NET MVC 5.1以降。列挙型の情報をもとに選択ボックスを生成するEnumDropDownListメソッドの使い方を解説。書籍転載の8本目(基礎編「4-2-5」)。
書籍転載について
本コーナーは、秀和システム発行の書籍『ASP.NET MVC 5 実践プログラミング』の中から、特にBuild Insiderの読者に有用だと考えられる項目を編集部が選び、同社の許可を得て転載したものです。
『ASP.NET MVC 5 実践プログラミング』の詳細や購入は秀和システムのサイトや目次ページをご覧ください。
ご注意
本記事は、書籍の内容を改変することなく、そのまま転載したものです。このため用字用語の統一ルールなどはBuild Insiderのそれとは一致しません。あらかじめご了承ください。
4-2-5 列挙型から選択ボックスを生成する[5.1]- EnumDropDownListメソッド
ASP.NET MVC 5.1では、列挙型の情報をもとに選択ボックスを生成するEnumDropDownListメソッドも追加されました。
【構文】EnumDropDownListForメソッド
MvcHtmlString EnumDropDownListFor(Expression<Func<TModel, TProperty>> expression [,String optionLabel] [,Object htmlAttributes])
- TModel: モデルの型
- TProperty: 値の型
- expression: プロパティを識別する式
- optionLabel: 空項目の表示テキスト
- htmlAttributes: その他の属性
たとえば、以下のようなCategoryEnum列挙体と、CategoryEnum型のCategoryプロパティを想定してみます。
using System.ComponentModel.DataAnnotations;
...中略...
public class Article
{
...中略...
[DisplayName(" カテゴリー ")]
public CategoryEnum Category { get; set; }
...中略...
}
|
using System.ComponentModel.DataAnnotations;
...中略...
public enum CategoryEnum
{
[Display(Name = ".NET")]
DotNet,
[Display(Name = "クラウド")]
Cloud,
[Display(Name = "リファレンス")]
Reference
}
|
このようなデータモデルに対して、EnumDropDownListメソッドを呼び出すと、以下のような結果が得られます。
@model MvcView.Models.Article
...中略...
カテゴリー:
@Html.EnumDropDownListFor(model => model.Category)
|
カテゴリー:
<select id="Category" name="Category">
<option value="0">.NET</option>
<option value="1">クラウド</option>
<option selected="selected" value="2">リファレンス</option>
</select>
|
CategoryEnum列挙体のメンバーが選択オプションとして展開されていること、Display属性で宣言された名前が表示テキストとして認識されていることを確認してください。
ちなみに、EnumHelper.GetSelectListメソッドを利用することで、列挙体から選択オプションを表すIList<SelectListItem>オブジェクトを生成することもできます。
【構文】GetSelectListメソッド
IList
- type: 任意の列挙型
以下は、(そうする意味はあまりありませんが)GetSelectListメソッドの戻り値から従来のDropDownListForメソッドを呼び出す例です。
@Html.DropDownListFor(
model => model.Category,
EnumHelper.GetSelectList(typeof(MvcView.Models.CategoryEnum))
)
|
メソッド | 概要 |
---|---|
BeginForm | フォームを生成(<form>タグ) |
BeginRouteForm | フォームを生成(<form>タグ。ルートパラメーターで指定可能) |
EndForm | フォームを終了(</form>閉じタグ) |
LabelFor/Label | ラベルを生成 |
TextBoxFor/TextBox | テキストボックスを生成 |
TextAreaFor/TextArea | テキストエリア(複数行テキストボックス)を生成 |
PasswordFor/Password | パスワード入力ボックスを生成 |
HiddenFor/Hidden | 隠しフィールドを生成 |
RadioButtonFor/RadioButton | ラジオボタンを生成 |
CheckBoxFor/CheckBox | チェックボックスを生成 |
DropDownListFor/DropDownList | 選択ボックスを生成 |
EnumDropDownListFor | Enum型をもとに選択ボックスを生成 |
ListBoxFor/ListBox | リストボックスを生成 |
※以下では、本稿の前後を合わせて5回分(第6回~第10回)のみ表示しています。
連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。
6. TextBoxFor/TextAreaFor/PasswordFor/ HiddenFor/RadioButtonFor/CheckBoxForメソッド[Razor]
モデル内の各プロパティのデータ型や値などの情報に基づいて、テキストボックス、ラジオボタンなどの要素を生成できるXxxxxForメソッドの使い方を解説。書籍転載の6本目(基礎編「4-2-3」)。
7. 選択ボックス/リストボックスを生成する - DropDownListFor/ListBoxForメソッド[Razor]
DropDownListFor/ListBoxForメソッドを使って、単一選択式の選択ボックスや複数選択式のリストボックスを生成する方法を解説。書籍転載の7本目(基礎編「4-2-4」)。
8. 【現在、表示中】≫ ASP.NET MVC 5.1: 列挙型から選択ボックスを生成する - EnumDropDownListメソッド[Razor]
ASP.NET MVC 5.1以降。列挙型の情報をもとに選択ボックスを生成するEnumDropDownListメソッドの使い方を解説。書籍転載の8本目(基礎編「4-2-5」)。
9. ASP.NET MVC 5.2: 選択ボックスの選択肢をグループ化する - SelectListクラス[Razor]
ASP.NET MVC 5.2以降。Razorで、選択肢をグルーピングした選択ボックスを生成するにはSelectListクラスを使用する。その使い方を解説。書籍転載の9本目(基礎編「4-2-6」)。
10. Label/TextBox/TextArea/Password/Hidden/ RadioButton/CheckBoxメソッド[Razor]
XxxxxForメソッドとは異なり、「For」なしのメソッドは、モデルから独立したフォーム要素を生成できる。その使い方を解説。書籍転載の10本目(基礎編「4-2-7」)。