web-dev-qa-db-ja.com

Razor構文は、UIマークアップで魅力的な利点を提供しますか?

スコット・ガスリーが彼のブログで mention Razor a fair bit を始めていることに気づきましたが、それが私のスタイルに適しているかどうかはわかりません。

「標準」の種類のASP.Netマークアップ(コンテンツプレースホルダーとインラインコード)にかなり慣れている人にとっては、これはかなりなじみのないスタイルですが、多くの追加ページを管理する必要があり、マークアップがあまりわかりません。

他の人の気持ちは何ですか?新しいMVCページを作成する際に真剣に検討すべきだと思うものですか、それとも存在しない問題を解決しようとしているだけですか?

88
Phil.Wheeler

[免責事項:私は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#コードを記述する方法に非常に似ています(AsxpとRazor構文を比較するPhil Haackによる最近のブログ投稿を確認してください。 http://haacked.com/archive/2011/01/ 06/razor-syntax-quick-reference.aspx
  2. 出力の自動HTMLエンコード(HTMLインジェクション攻撃から保護するのに役立ちます)
  3. マークアップの組み込み(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

153
marcind

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

さらに、分離コードとページの定義全体を1つの@model modelに簡単に記述できます。

また、marcindが指摘したように、runat=serverを常に含める必要がないことも非常に良いことです。

全体として、Razorエンジンを使用することに本当に感謝しています。Razorエンジンを使用すると、開発が簡単になるだけでなく、コードが読みやすくなります。

3
Travis J

このコンバーター を試すことができます。詳細については、 このブログ投稿 を確認してください。

2
George K