[免責事項: 私は 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-構文クイックリファレンス.aspx )
- 出力の自動 HTML エンコーディング (HTML インジェクション攻撃からの保護に役立ちます)
- 組み込みの (100% ではありませんが) マークアップの検証により、不均衡なタグを回避できます
ページ関連の概念も、ASPX にあるものから簡単にマッピングできます
- ご覧のとおり、インライン コードは引き続き許可されています
- セクション (オプションの場合もあります) は、コンテンツ プレースホルダーと同等です
- マスターページの代わりにレイアウトページ
- 全体ビューと部分ビューの概念は同じです
@functions { ... }
の代わりにブロック<script runat="server"> ... </script>
さらに、Razor には、ASPX で利用できるものよりも優れていると言える便利な概念がいくつかあります。
@helper
マークアップを発行する関数を非常に簡単に作成するための関数
@model
<%@ Page ...
完全なクラス名でディレクティブを記述することなく、ビューのモデル タイプを指定するためのキーワード
簡潔で標準に準拠したビューをより簡単に記述できるようにすると同時に、一般的なコードをリファクタリングする方法を提供するという、本当の問題に取り組んだと思います。
もちろん、誰もが構文を好むわけではないため、ASPX ビュー エンジンも完全にサポートしています。さらに、Spark と NHaml も確認できます。これらは、コミュニティで大きな支持を得ている 2 つのサードパーティ ビュー エンジンです。次のブログ投稿には、さまざまな製品の優れた比較があります:リンク