本稿は、Scott Guthrie氏のブログを、氏の許可を得て、翻訳、転載したものです。米Microsoft社の副社長で、ASP.NETやSilverlightの開発チームを統率する氏のブログでは、次期製品を含む最新の技術をいち早く紹介しています。
原典:ASP.NET MVC 3: Implicit and Explicit code nuggets with Razor
ASP.NET MVC 3:Razorで暗黙的、明示的コードナゲット
この投稿は、 ASP.NET MVC 3ベータ版/RCの新機能を、いくつか詳細に紹介していく『ミニ投稿』シリーズの1つです。
- Razorの@model新キーワード(10月19日)
- Razorでのレイアウト(10月22日)
- Razorでサーバーサイドのコメント(11月12日)
- Razorの@:と<text>文法(12月15日)
- Razorで暗黙的、明示的コードナゲット(本日)
本日の投稿では、Razorでビューテンプレートにコードナゲットを暗黙的、また明示的に定義する方法についてお話しし、それらのコード例をウォークスルーします。
Razorで流れのあるコーディング
ASP.NET MVC 3は、(既存の.aspxビューエンジンに加え)『Razor』と呼ばれる新ビューエンジンとともに出荷されます。Razorが導入された理由や、サポートされている文法などの詳細は、以前のRazor導入のブログ投稿で確認できます。
Razorでは、ビューテンプレートを書く時に文字数や入力数を最低限に抑えられ、高速で流れるようなコーディングのワークフローが可能です。通常のテンプレートによる文法とは違い、RazorではHTML内にサーバーブロックの開始と終了を明示的に表示する必要がありません。Razorのパーサーは、サーバーブロックの開始と終了をコードから推測します。これにより、クリーンかつ高速で入力が楽しくなるような、コンパクトで表現力のある文法が可能になります。
例えば、以下のRazorスニペットを使用して、製品コレクションを反復し、対応製品のページにリンクしている製品の<ul>一覧が出力できます。
実行すると、以下のような出力を生成します。
上記で、foreachループのコンテンツ内に、2つのコードナゲットが埋め込まれている様子を確認してください。一方が製品名を出力し、もう一方はハイパーリンクにProductIDが埋め込まれています。これらのコードナゲットを、明示的にラップする必要はありません。Razorは、このような状況でのコードの開始と埋め込みを暗黙的に確認できるのです。