連載:〜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氏のブログより〜」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|