![]() |
連載:〜ScottGu氏のブログより〜ASP.NET MVC 2:強く型付けされたHtmlヘルパーScott Guthrie 著/Chica 訳2010/01/13 |
|
|
|
[ブログに加え、現在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,
| 「〜ScottGu氏のブログより〜」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -







