本稿は、Scott Guthrie氏のブログを、氏の許可を得て、翻訳、転載したものです。米Microsoft社の副社長で、ASP.NETやSilverlightの開発チームを統率する氏のブログでは、次期製品を含む最新の技術をいち早く紹介しています。
ASP.NET MVC 3: Razorの@:と<text>文法
この投稿は、ASP.NET MVC 3ベータ版/RCの新機能を、いくつか詳細に紹介していく『ミニ投稿』シリーズの1つです。
- Razorの@model新キーワード(10月19日)
- Razorでのレイアウト(10月22日)
- Razorでサーバーサイドのコメント(11月12日)
- Razorの@:と<text>文法(本日)
本日のブログ投稿では、Razorビューエンジンの2つの便利な文法的新機能である、@:と<text>について話します。
Razorで流れのあるコーディング
ASP.NET MVC 3は、(既存の.aspxビューエンジンに加え)『Razor』と呼ばれる新ビューエンジンとともに出荷されます。Razorが導入された理由や、サポートされている文法などの詳細は、以前のRazor導入のブログ投稿で確認できます。
Razorでは、ビューテンプレートを書く時に文字数や入力数を最低限に抑えられ、高速で流れるようなコーディングのワークフローが可能です。通常のテンプレートの文法とは違い、HTML内にサーバーブロックの開始と終了を明示的に表示する必要がありません。Razorのパーサーは、サーバーブロックの開始と終了をコードから推測します。これにより、クリーンかつ高速で入力が楽しくなるような、コンパクトで表現力のある文法が可能になります。
例えば、以下のRazorスニペットは、製品一覧の反復で使用できます。
実行すると、以下のような出力を生成します。
コードブロックの終了を暗黙的に確認する時に、Razorが使用するテクニックの1つが、コンテンツの領域の開始を表示するタグ/要素の検索です。例えば、上記のコードスニペットだと、Razorは自動的に、foreachループ内の<li></li>ブロックを、HTMLコンテンツブロックとして扱います。それは、<li>開始タグを発見していて、それがC#で有効なものではないことがわかっているからです。
コード内のコンテンツブロックを特定するためにタグを使用するこのテクニックは、HTML作成が関わるようなシナリオで、Razorを非常にクリーンで生産性の高いものにしている主要素の1つになっています。