Razor構文は、UIマークアップで説得力のある利点を提供しますか?


88

私はスコット・ガスリーがし始めて気づくレイザーに言及公平なビット自身のブログ上のが、私はちょうどそれを確認してください、それは私のスタイルに適してだということではありませんよ。

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

他の人の気持ちはどうですか?新しいMVCページを足場するときに真剣に検討する必要があると思いますか、それとも存在しない問題を解決しようとしているだけですか?


3
実際の構文は、通常のビューエンジンに精通している人にとっては簡単だと思いました。<%の代わりに@を使用し、コードナゲットを閉じないでください...
Jaco Pretorius 2011年

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

回答:


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- 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


7
本当に明確で完全な回答をありがとう。これは私の意見を十分に変えて、Razorにまともなショットを与える。
Phil.Wheeler、

2
アーロン、RazorとAspxを組み合わせて組み合わせることができるため、プロジェクトを一度に1ページずつ変換することができます(唯一の欠点は、Razorビューで使用するため、Razor形式でマスターページを複製する必要があることですaspxマスターページはサポートされていません)
marcind

1
HTMLに@記号をどのように配置しますか?例えば<a href="mailto:john@aol.com">
クリスS

9
@Chris Escape it:@@
BrunoLM 2011年

6
この投稿の更新として、Razorを過去3〜4か月間使用してきましたが、慣れてきましたが、従来のASP.Netマークアップに快適に戻ることができないと思います。
Phil.Wheeler 2011

3

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

さらに、コードビハインドとページの定義全体を1つのに簡略化して記述します@model model

marcindでも言及されているように、常に含める必要runat=serverがないことも非常に便利です。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.