web-dev-qa-db-ja.com

Razor / CSHTML-私たちが持っているものよりもメリットはありますか?

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

人々の意見を聞きたいだけです。

75
Brian Mains

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

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

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

44
Simon Steele

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

私は、MSDN Webサイトのコアチームで働いていました。現在、プログラミングチームでeコマースサイトにc#razorを使用しています。バックエンドc#razorページとLINQ-Entityメモリデータベースを備えたjQueryフロントエンドに重点を置いているため、クエリを含むforページキャッシュはありません。 MVCは使用せず、IIS 7、ASPXページまたはViewStateまたはサーバー側イベントプログラミングなしのURL書き換えモジュールでマップされるかみそりページを備えた単純なASP.NETのみを使用します。 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を使用して、ポストバックやページリクエストにまたがるあらゆる種類の状態を非常に単純に保存することができます。あなたはそれについて考える必要はありません。

44
Jason Sebring
  1. すべてがデフォルトでエンコードされます!!!これはかなり大きいです。

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

  3. 必要なセクションを作成できます。これはニースです。

7
Kyle Nunery

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

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

そのため、asp.netビューエンジンに対する明確な利点がいくつかあります。

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

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

宣言的なヘルパーを行う方法とまったく同じようにパーシャルをコーディングできます。変数をパーシャルに渡すだけで、同じことができます。これはspark=でかなり前からありました。

3
rball