76

新しいCSHTMLページ機能を使用していて、既存のASP.NET MVCのデフォルトのビューエンジンやWebフォームよりも、この新しいビューエンジンの構文を好む人はいますか?もしそうなら、なぜですか?CSHTMLは、MVCやWebフォーム、またはその逆に勝る利点がありますか?

人々がそれを受け入れているのを聞いて興味があります。

4

4 に答える 4

45

利点の 1 つは、Razor ビューを単体テスト内でレンダリングできることです。これは、以前の ASP.Net レンダラーでは簡単に実現できなかったことです。

ScottGu の発表から、これは設計目標の 1 つとしてリストされています。

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

于 2010-08-06T12:56:33.537 に答える
45

元マイクロソフト開発者の意見

MSDN Web サイトのコア チームで働いていました。現在、私はプログラミング チームで e コマース サイトに c# razor を使用しています。バックエンドの c# razor ページと LINQ-Entity メモリ データベースを備えた jQuery フロント エンドに重点を置いているため、クエリでネストされた for ループでも、ページの応答時間は 1 ~ 2 ミリ秒です。ページキャッシュなし。MVC は使用せず、IIS 7 の URL 書き換えモジュールでマップされたカミソリ ページを含む単純な ASP.NET のみを使用し、ASPX ページ、ViewState、またはサーバー側のイベント プログラミングはまったく使用しません。チャレンジされた正規表現のために MVC がコード構造に入れる余分な (不要な) レイヤーはありません。私たちにとって、より少ないことはより良いことです。それはすべて無駄がなく意地悪ですが、テスト容易性のためにMVCに小道具を提供しますが、それだけです。

Razor ページには、ASPX ページのようなイベント ライフ サイクルはありません。要求された 1 つのページとしてレンダリングするだけです。C# は非常に優れた言語であり、Razor はその仕事をうまくやらせてくれます。ジェネリックと linq を使用した匿名型付けにより、C# と Razor ページの使用が非常に簡単になります。Razor ページを使用すると、思考とコードの軽量化に役立ちます。

Razor と MVC の欠点の 1 つは、ViewState のような永続性がないことです。そのためのソリューションを実装する必要があったので、そのための jQuery プラグインをここに作成しました -> http://www.jasonsebring.com/dumbFormState は、HTML 5 オフライン ストレージをサポートするプラグインであり、すべての主要なフォーム状態で動作します。現在のブラウザ。現在はフォームの状態だけですが、window.sessionStorageまたはwindow.localStorageを使用して、ポストバックやページリクエストにまたがるあらゆる種類の状態を非常に簡単に保存できます.URLとフォームインデックスに基づいて自動保存と名前空間あなたはそれについて考える必要はありません。

于 2011-02-26T08:31:51.753 に答える
7
  1. すべてがデフォルトでエンコードされています!!! これはかなり巨大です。

  2. 宣言型ヘルパーはコンパイルできるので、共有するために特別なことをする必要はありません。.ascx コントロールをある程度置き換えると思います。別のプロジェクトで .ascx コントロールを使用するには、いくつかの手順を踏まなければなりません。

  3. 素敵なセクションを必須にすることができます。

于 2010-12-15T17:37:51.483 に答える
3

最大の利点は、コードがより簡潔になることです。VS エディターには、他のビュー エンジンにはない IntelliSense のサポートもあります。

C# コード内で HTML ヘルパーを実行すると、ASP.NET のカスタム コントロールを思い出させるので、宣言型 HTML ヘルパーもかなりクールに見えます。パーシャルからページを取得したと思いますが、インラインコードを使用しています。

したがって、asp.net ビュー エンジンよりもいくつかの明確な利点があります。

ただし、spark のようなビュー エンジンとは対照的に:

Spark はさらに簡潔で、if とループを html タグ自体に保持できます。マークアップは今でも私にとってより自然に感じられます。

宣言型ヘルパーとまったく同じようにパーシャルをコーディングできます。変数をパーシャルに渡すだけで、同じことができます。これはかなり長い間、spark で使用されてきました。

于 2010-08-06T18:47:19.953 に答える