[解決済み] Razor構文はUIマークアップに説得力を与えるか?
質問
私は 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の利点は、次のようなものだと言えるでしょう。
- 簡潔な構文で、通常の C# コードの書き方に非常に近い(Phil Haack 氏による Asxp と Razor の構文を比較した以下の最近のブログポストをご覧ください。 http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx )
- 出力の自動 HTML エンコーディング (html インジェクション攻撃から保護するのに役立ちます)
- マークアップのビルトイン検証(100% ではありませんが)により、不均衡なタグを回避することができます。
ページ関連の概念も、ASPX で持っているものから簡単にマッピングできます。
- ご覧のように、インラインコードはまだ許可されています。
- セクション (オプション) はコンテンツのプレースホルダーと同じです。
- マスターページの代わりにレイアウトページ
- フルビューとパーシャルビューのコンセプトは同じです。
-
@functions { ... }
ブロックの代わりに<script runat="server"> ... </script>
さらにRazorは、ASPXで利用できるものよりも優れていると言えるほど、多くの便利なコンセプトを持っています。
-
@helper
マークアップを生成する関数を簡単に作成するための関数です。 -
@model
キーワードで、ビューのモデルタイプを指定することができます。<%@ Page ...
ディレクティブを書くことなく、ビューのモデルタイプを指定することができます。
私たちは、より簡単に簡潔で標準に準拠したビューを書くことができ、同時に一般的なコードをリファクタリングする方法を提供するという、本当の問題に取り組んだと思いたいのです。
もちろん、すべての人がこの構文を好むわけではありませんし、だからこそ私たちは ASPX ビューエンジンも完全にサポートしています。さらに、Spark と NHaml は、コミュニティから大きな支持を得ている 2 つのサード パーティ製ビュー エンジンです。次のブログポストでは、さまざまな提供物の良い比較をしています。 リンク
関連
-
[解決済み] Razor View throwing "The name 'model' does not exist in the current context".
-
[解決済み] コントローラ '...' でパブリックアクションメソッド '...' が見つかりませんでした。
-
[解決済み】@media メディアクエリと ASP.NET MVC razor 構文の衝突
-
[解決済み】"JSONリクエストが大きすぎてデシリアライズできませんでした "の表示について
-
[解決済み] asp.net mvc: なぜ Html.CheckBox は追加の隠された入力を生成するのですか?
-
[解決済み] ASP.Net MVCでRequest on Controllerをモック化する方法とは?
-
[解決済み] Visual Studio 2012 または Visual Studio 2013 で古い MVC プロジェクトを開くにはどうすればよいですか?
-
[解決済み] Razor _layout.cshtml のファイル名の先頭にアンダースコアがあるのはなぜですか?
-
[解決済み] Razorコメント文法
-
[解決済み] RazorによるHtml.RenderPartial()のシンタクス
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] GET リクエストを許可するには、JsonRequestBehavior を AllowGet に設定します。
-
[解決済み] ファイルまたはアセンブリ 'System.Web.Mvc' を読み込めませんでした。
-
[解決済み] Entity Framework Code Firstを使用して一意制約を設定することは可能ですか?
-
[解決済み] RedirectToActionのパラメータとしてmodelを渡すことはできますか?
-
[解決済み] MVCで、文字列の結果を返すにはどうしたらいいですか?
-
[解決済み】MVC 4 @Scripts "does not exist".
-
[解決済み】ASP.NET MVC 3 Razor - EditorForにクラスを追加する。
-
[解決済み】ASP.NET MVC 3 - 部分テンプレートと表示テンプレートと編集テンプレート
-
[解決済み】Java Server Faces 2.0の主なデメリットは何ですか?
-
[解決済み] NerdDinnerでASP.NET MVCでModelState.IsValidは何のために有効なのか?