[免責事項:私はMVCとRazorのMicrosoft開発者の1人なので、少し偏っているかもしれません:)]
Razorは、必要最小限の制御文字のみを使用する簡潔なテンプレート言語として設計されました。ビューの大部分は、「従来の」WebForms構文を使用する同じコードよりも少ない文字数で表現できると思います。
たとえば、ASPX構文の次のコードスニペット:
<% if(someCondition) { %>
<ol>
<% foreach(var item in Model) { %>
<li><%: item.ToString() %></li>
<% } %>
</ol>
<% } %>
Razorでは次のように表現できます。
@if(someCondition) {
<ol>
@foreach(var item in Model) {
<li>@item.ToString()</li>
}
</ol>
}
ASPXバージョンには21個の移行文字(<%
および%>
)がありますが、Razorバージョンには3つ(@
)しかありません
Razorの利点は次のとおりです。
- 簡潔な構文は、通常のC#コードの記述方法とよく似ています(Phil HaackによるAsxpとRazorの構文を比較した次の最近のブログ投稿を確認してください:http ://haacked.com/archive/2011/01/06/razor- syntax-quick-reference.aspx)
- 出力の自動HTMLエンコード(HTMLインジェクション攻撃からユーザーを保護するのに役立ちます)
- タグの不均衡を回避するのに役立つ、マークアップの組み込み(100%ではない)検証
ページ関連の概念も、ASPXにあるものから簡単にマッピングされます
- あなたが見ることができるように、インラインコードはまだ許可されています
- セクション(省略可能)はコンテンツプレースホルダーと同等です
- マスターページではなくレイアウトページ
- 完全ビューと部分ビューの概念は同じです
@functions { ... }
代わりにブロック <script runat="server"> ... </script>
さらに、Razorには、ASPXで利用できるものよりも優れていると私が言ういくつかの便利な概念があります。
@helper
マークアップを発行する関数を本当に簡単に作成するための関数
@model
<%@ Page ...
完全なクラス名でディレクティブを記述することなく、ビューのモデルタイプを指定するためのキーワード
簡潔で標準に準拠したビューをより簡単に記述できるようにすると同時に、一般的なコードをリファクタリングする方法を提供するという、実際の問題に取り組んだと思います。
もちろん、誰もが構文を好むわけではないので、ASPXビューエンジンも完全にサポートしています。さらに、SparkとNHamlもチェックできます。これらは2つのサードパーティのビューエンジンであり、コミュニティの重要な支持を得ています。次のブログ投稿では、さまざまなサービスを比較しています:http : //blogs.msdn.com/b/coding4fun/archive/2010/10/04/10070953.aspx