1. ホーム
  2. asp.net-mvc

[解決済み] Razor構文はUIマークアップに説得力を与えるか?

2023-04-09 15:42:37

質問

私は Scott Guthrie が Razor について a フェアビット をブログで紹介していますが、私のスタイルに合うかどうか、ちょっと自信がないんです。

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

このことについて、他の人たちはどのように感じていますか。 新しい MVC ページを scaffold するときに真剣に考慮すべきことだと思いますか、それとも、存在しない問題を解決しようとしているだけですか?

どのように解決するのですか?

[免責事項: 私は MVC と Razor の Microsoft 開発者の一人なので、少し偏っているかもしれません :)] 。

私たちは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 つのサード パーティ製ビュー エンジンです。次のブログポストでは、さまざまな提供物の良い比較をしています。 リンク