EditorFor、DisplayForで使用されるカスタムテンプレート

HTMLヘルパーの EditorFor や DisplayFor で表示できるデザインを自作できるカスタムテンプレートを調べました。

 

EditorFor は入力項目、DisplayFor は出力項目生成を補助するHtmlヘルパーです。

出力したい項目はプロパティまたはモデルクラスをラムダ式で引数に指定したりすると、それに応じたタグをHtmlへ出力してくれます。

また、モデルクラス名を直接指定できる EditorForModel、DisplayForModel もあります。

 

Htmlへ出力する際に使用するカスタムテンプレートファイルの参照場所は以下のとおりです。

  • EditorFor、EditorForModel

~Viewコントローラ名(無い場合はShared)EditorTemplates~.ascx

  • DisplayFor、DisplayForModel

~Viewコントローラ名(無い場合はShared)DisplayTemplates~.ascx

なお、ファイルが無い場合は型や属性等から自動判別して適切なタグを出力します。

 

以下はビューに「Address」クラスが強く型付けされた場合のクラス単位での呼び出し例です。

 

  • Html.EditorFor(Model => Model)

→ Address.ascx

  • Html.EditorFor(Model => Model, “Entry”)

→ Entry.ascx

  • Html.EditorForModel()

→ Address.ascx

  • Html.EditorForModel(“Entry”)

→ Entry.ascx

 

以下はstring型のプロパティの呼び出し例です。

 

  • Html.EditorFor(Model => Model.name)

→ string.ascx

  • Html.EditorFor(Model => Model.name, “Name”)

→ Name.ascx

  • nameプロパティにDataType属性[DataType(DataType.Text)] を追加して
    Html.EditorFor(Model => Model.name)

→ Text.ascx

  • nameプロパティにUIHint属性[UIHint(“Name”)] を追加して
    Html.EditorFor(Model => Model.name)

→ Name.ascx

 

それでは、→前回記事でもご紹介した都道府県ドロップダウンリストボックスのソースコードを作成例として挙げます。

 

以下はメタデータクラスでの属性指定

 

以下はビュー側での呼び出し

 

以下は EditorTemplatesPref.ascx

 

以下は DisplayTemplatesPref.ascx

 

以上です。

誤りなどありましたらご指摘のほどよろしくお願いしますm(_ _)m

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください