web-dev-qa-db-ja.com

ASP.NET MVC Razorビューエンジン

ASP.NET MVCの新しい Razor ビューエンジンに関する Scott Guthrie のブログエントリを読み、これを読んだ後 question 使用可能なビューエンジンを比較します。

Razorは、デフォルトのビューエンジンの問題のほとんどに対処しているようです。機能の違いによって、開発者にとって魅力的な選択になるでしょうか?あなたがそれを使用できないようにするであろうどんな機能が不足していますか?

41
Nicholas Murray

マークアップ言語を除いて、表示エンジンには他にもたくさんあります。 Spark私が見逃す機能:

  • c#(マクロ)ではなく、同じマークアップ言語を使用してhtml拡張機能を記述します。Razorもこれをサポートしているようです。メソッドやパラメーターのオーバーライドをサポートしていることを願っています。
  • カスタムタグ(<Tag />を使用するように_Tag.sparkを記述);
  • varIsFirst、varIndexなどの自動生成された変数。
  • 特別な表現形式(条件付き属性の場合は?{}、エラーをスキップする場合は$!{});
  • マークアップの一部をマスターで一度だけレンダリングする必要があることを部分的に指定する機能を含む、優れたマスター/部分レイアウトのサポート(スクリプトインクルードなど)。
  • webFormsマークアップを引き続き使用できます-互換性と増分アップグレードに最適です。
  • ""と ''の両方の引用符を相互に使用するためのサポート(非常に便利です)。

私はSpark loops/ifs moreの構文-HTML <>とC#{}の波カッコを混在させると見栄えがよくありませんが、それは純粋に個人的な意見です。

Razorにも非常に有望な機能があります。インラインテンプレート。 Spark作成者がマイクロソフトに雇われたとすると、Razorが適切に記述され、非常に有用で、十分にサポートされているビューエンジンであることが期待されます。もちろん、何百もの私のSpark Razorを使用したビュー(私はSparkを使用して何十ものWebFormsビューを書き直しましたが)ですが、Razorを真剣に検討します-これは質問からしか知りませんでした、ありがとう-もちろん、これは有望に見えます。もちろん、WebFormsとは競合しません(どのビューエンジンもWebFormsより優れています)が、まだない場合は、新しいASP.NET MVCプロジェクトに適しています。別のビューエンジンへの投資が多すぎます。

22
queen3

ユニットテスト可能:新しいビューエンジンの実装は、ビューをユニットテストする機能をサポートします(コントローラーやWebサーバーを必要とせず、ユニットテストプロジェクトでホストできます。特別なアプリドメインは必要ありません)。

やっと!!! Microsoftがこれをサポートするビューエンジンを最終的に導入するのに8年近くかかったとは信じられません。

23
Darin Dimitrov

私には、3つの説得力のある理由があります。

  1. コンパイル-RazorビューをDLLにコンパイルできます。ついに、.NET Webプロジェクトで適切な再利用が可能になります。 Webプロジェクトの一部でコードを.ascxファイルとして浮かび上がらせることなく、自分自身を表示する方法を知っているビジネスオブジェクトを作成できます。

  2. Testability-クラスにコンパイルされているので、単体テストを記述して、そこにオブジェクトの模擬インスタンスをスローし、HTMLが正しいかどうかを確認できます。

  3. IntelliSenseTerse Syntaxは素晴らしいですが、最も重要な部分ではありません。

15
Quango

明らかに私は実際にはまだ評価していませんが、ASPXエンジンよりも簡潔であるという事実は、切り替えを誘発する最も説得力のある機能です。また、より適切に自動フォーマットされることを願っています。 IntelliSenseでサポートされ、MVCで提供されるという事実は、新しいプロジェクトを開始するための自然な選択になります。切り替えを行う前に、小規模なプロジェクトでそれを公平に検討します。記事を読んだだけでは、現在ASPXエンジンで実行していることで、それを使用して実行できないことは何も見つかりませんでした。

pdate: Razorを1年以上使用していて、ASPXエンジンに戻ることはありません。構文は非常に自然で表現力豊かに見えます。

4
tvanfosson

見た目がすっきりしているだけでなく、レイアウトセクションの柔軟性も非常に優れており、宣言的なHTMLヘルパーは非常に便利です。これまでのところ、それを使用することの欠点は見られませんが、もちろん実際に試してみる必要があります。

0
Turnkey

Razorはforeachにブラケットを使用します。 SparkここではXMLタグを使用します。

したがって、Sparkは、XMLプロセッサごとのビューファイルの解析と分析を完全にサポートしています。

それは大きなことではありませんが、一貫性と拡張性を示しています。

0
cRichter