88

Scott Guthrie が彼のブログで Razor についてかなり言及し始めていることに気付きましたが、それが私のスタイルに適しているかどうかはわかりません.

「標準」の種類の ASP.Net マークアップ (コンテンツ プレース ホルダーとインライン コード) にかなり慣れている人にとってはかなりなじみのないスタイルですが、管理するページが多くなり、マークアップが明確ではないように感じます。

それに対する他の人々の感情はどうですか?新しい MVC ページをスキャフォールディングするときに真剣に検討する必要があると思われるものですか、それとも存在しない問題を解決しようとしているだけですか?

4

2 に答える 2

153

[免責事項: 私は 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の利点は次のとおりです。

  1. 通常の C# コードを記述する方法と非常によく似た簡潔な構文 (Phil Haack による次の最近のブログ投稿を参照して、Asxp と Razor 構文を比較してください: http://haacked.com/archive/2011/01/06/razor-構文クイックリファレンス.aspx )
  2. 出力の自動 HTML エンコーディング (HTML インジェクション攻撃からの保護に役立ちます)
  3. 組み込みの (100% ではありませんが) マークアップの検証により、不均衡なタグを回避できます

ページ関連の概念も、ASPX にあるものから簡単にマッピングできます

  • ご覧のとおり、インライン コードは引き続き許可されています
  • セクション (オプションの場合もあります) は、コンテンツ プレースホルダーと同等です
  • マスターページの代わりにレイアウトページ
  • 全体ビューと部分ビューの概念は同じです
  • @functions { ... }の代わりにブロック<script runat="server"> ... </script>

さらに、Razor には、ASPX で利用できるものよりも優れていると言える便利な概念がいくつかあります。

  • @helperマークアップを発行する関数を非常に簡単に作成するための関数
  • @model<%@ Page ...完全なクラス名でディレクティブを記述することなく、ビューのモデル タイプを指定するためのキーワード

簡潔で標準に準拠したビューをより簡単に記述できるようにすると同時に、一般的なコードをリファクタリングする方法を提供するという、本当の問題に取り組んだと思います。

もちろん、誰もが構文を好むわけではないため、ASPX ビュー エンジンも完全にサポートしています。さらに、Spark と NHaml も確認できます。これらは、コミュニティで大きな支持を得ている 2 つのサードパーティ ビュー エンジンです。次のブログ投稿には、さまざまな製品の優れた比較があります:リンク

于 2010-10-26T06:43:09.713 に答える
3

個人的には、エスケープ文字の使用数が減ったことに本当に感謝しています。<% %>と比較すると、使用は非常に退屈に@{}なり、構文的にも魅力的ではありません。

さらに、コードビハインドとページの定義全体を記述することは、単一の に簡素化されます@model model

marcind も指摘しているように、常に含める必要がないことrunat=serverも非常に優れています。

全体として、私は Razor エンジンを使用して本当に感謝しており、開発が容易になるだけでなく、コードが読みやすくなることがわかりました。

于 2012-03-24T10:46:23.243 に答える