連載:〜ScottGu氏のブログより〜

ASP.NET MVC 2:強く型付けされたHtmlヘルパー

Scott Guthrie 著/Chica
2010/01/13

 本記事は、Microsoftの本社副社長であり、ASP.NETやSilverlightなどの開発チームを率いるScott Guthrie氏のブログを翻訳したものです。氏の許可を得て転載しています。
【元記事】 ASP.NET MVC 2: Strongly Typed Html Helpers (2010/01/10)

  [ブログに加え、現在Twitterを使って簡単な更新やリンク共有を行っています。twitter.com/scottguで、私をフォローしてください。]

 これは、ASP.NET MVC 2リリースに向けたブログ投稿シリーズの第1弾です。このブログ投稿では、ASP.NET MVC 2で追加された、新しい強く型付けされた HTMLヘルパーをカバーします。

既存のHTMLヘルパー・メソッド

 ASP.NET MVC 1は、HTML UI生成の手助けにビュー・テンプレート内で使用可能なHTMLヘルパー・メソッドの一式とともに出荷されました。例えば、テキストボックスを出力するには、以下のようにHtml.TextBoxヘルパー・メソッドを使用して(.aspxのビュー・テンプレート内に)コードを書きます。


図1

 上記のヘルパー・メソッドの最初のパラメータはテキストボックスの名前/IDを提供し、2つ目のパラメータにはその値を指定します。上記のヘルパー・メソッドはその後、以下のようなHTMLをブラウザに返します。


図2

新しい強く型付けされた HTMLヘルパー・メソッド

 ASP.NET MVC 2に望まれていた共通機能の1つが、ビュー・テンプレートへ引き渡されるモデル/ビューモデルを参照するときに、ラムダ式を使用した強く型付けされたHTMLヘルパーもサポートすることでした。これにより、ビューのコンパイル時のチェックが改善され(それにより実行時ではなくビルド時にバグが発見できます)、またビュー・テンプレート内でのコードのIntelliSenseサポートも改善されます。

 新しい強く型付けされたHTMLヘルパー・メソッドは、現在ASP.NET MVC 2にビルトインされています。これらのメソッドは、“Html.HelperNameFor()”という名前付け規則を使用します。例えば、Html.TextBoxForメソッド、Html.CheckBoxForメソッド、Html.TextAreaForメソッドなどです。これらは、要素の名前/IDの両方と、それに対する値の出力の指定にラムダ式の使用をサポートします。

 例えば、ASP.NET MVC 2を使用すると、上記のHtml.TextBoxヘルパーに加え、新しいHtml.TextBoxForヘルパーが使用できます。


図3

 上記を見ると、“ProductName”文字列パラメータを指定する必要がないことが分かります。ラムダ式は柔軟性があるので、その値に加え、モデル・オブジェクト上のプロパティ/フィールドの名前も取得できます。

 HTMLヘルパーは強く型付けされているので、Visual Studioの中でラムダ式を書くときには、完全なIntelliSenseサポートも提供されます。


図4

 先に紹介した遅延バインド版のHTMLヘルパー(図2)と同様にHTMLは描画されます(図5)。


図5

ASP.NET MVC 2にビルトインされている強く型付けされたHTMLヘルパー・メソッドの一覧

 ASP.NET MVC 2は以下の強く型付けされたHTMLヘルパーをビルトインでサポートしています。

HTML要素ヘルパー:

  • Html.TextBoxForメソッド
  • Html.TextAreaForメソッド
  • Html.DropDownListForメソッド
  • Html.CheckboxForメソッド
  • Html.RadioButtonForメソッド
  • Html.ListBoxForメソッド
  • Html.PasswordForメソッド
  • Html.HiddenForメソッド
  • Html.LabelForメソッド

そのほかのヘルパー:

  • Html.EditorForメソッド
  • Html.DisplayForメソッド
  • Html.DisplayTextForメソッド
  • Html.ValidationMessageForメソッド

 新しいHtml.EditorForヘルパー・メソッドやHtml.DisplayForヘルパー・メソッドについては、このシリーズの後でASP.NET MVC 2で改善された自動スキャフォールド機能をカバーするときのブログ投稿でカバーします。このシリーズの次のブログ投稿ではHtml.ValidationMessageForヘルパー・メソッドも使う予定です。これはASP.NET MVC 2内の改善された検証サポートをカバーします。

スキャフォールディング内の強く型付けされたHTMLヘルパー・メソッド

 “ビューの追加”コマンドを使用して新しく強く型付けされたビュー・テンプレートを“スキャフォールディング”するとき、VS 2008およびVS 2010の両方がデフォルトで新しく強く型付けされたHTMLヘルパーを使用します。

 例えば、以下のような、“Product”モデル・クラスにおいて、編集フォームを描画する“Edit”アクション・メソッドを持った簡単な“ProductsController”を仮定しましょう。


図6

 Visual Studioを使用して、Editアクション・メソッド内で右クリックし、“ビューの追加”コンテキスト・メニュー・コマンドを選択し、ビュー・テンプレートを作成します。そして、Productオブジェクトを使用してスキャフォールドされる“Edit”テンプレートの作成を選択します。


図7

 ASP.NET MVC 2では、デフォルトで作成されたビュー・テンプレートは、新しい強く型付けされたHTMLヘルパー・メソッドを使ってProductモデル・オブジェクトを参照します。


図8

まとめ

 ASP.NET MVC 2に含まれている強く型付けされたHTMLヘルパー・メソッドは、ビュー・テンプレート内において、より優れたタイプ・セーフティを得るための素晴らしい方法を提供します。これにより、ビューのコンパイル時チェックが改善され(実行時ではなくビルド時にエラーが発見できるため)、またVisual Studioでは、ビュー・テンプレートを編集する際にリッチなIntelliSenseがサポートされます。

 Hope this helps,

 ScottEnd of Article

   
 
インデックス・ページヘ  「〜ScottGu氏のブログより〜」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間