何、なぜ、いつcshtml vs aspxを選択する方が良いですか?


108

私は何を、なぜ、いつcshtmlを選ぶ方が良いのか、何を、なぜ、いつaspxテクノロジーを選ぶのが良いのか知りたいのですが?これらの2つのテクノロジーは何を対象としていますか?

ありがとうございました、


microsoft.com Webサイトのどこにもcshtmlファイルを見たことがないと思います。
user34660 2017

@ user34660 cshtmlかaspxかをどのように判断しますか?拡張子は隠されています。
Sajuuk

回答:


111

他の人が答えたように.cshtml(または.vbhtmlそれがあなたの好みなら)、MVCエンジンをロードするためのハンドラーマッピングを提供します。.aspx拡張は、単にコンパイルを実行し、ウェブフォームを働くASPNET_ISAPI.DLLをロードします。ハンドラーマッピングの違いは、MVCアプリケーションとWebFormsアプリケーションの両方を共通のルートで実行できるようにするために、同じサーバー上で2つを共存させる方法にすぎません。

これにより、http://www.mydomain.com/MyMVCApplicationが有効になり、MVCルールと共に提供されるとともに、http://www.mydomain.com/MyWebFormsApplicationが標準のWebフォームとして有効になります。

編集:
テクノロジの違いについては、MVC(Razor)テンプレートフレームワークは、モデル(ビジネス/データオブジェクト)間のコードロジックを分離するテンプレートビューのよりRESTfulな「Webベースの」プラットフォームに.Netページを返すことを目的としています、ビュー(ユーザーに表示されるもの)とコントローラー(2つの間の接続)。WebFormsモデル(aspx)は、Microsoftが複雑なjavascript埋め込みを使用して、WinFormsアプリケーションに似たよりステートフルなアプリケーションをシミュレートし、ページ間で独自の状態を保持できるイベントとページライフサイクルをシミュレートする試みです。

どちらのシステムにも賛成または反対の議論があるため、どちらを使用するかの選択は常に論争の的となります。MVCアーキテクチャのシンプルさ(ルーティングは単純ではありませんが)とRazor構文の使いやすさが好きです。WebFormsアーキテクチャは重すぎて、効果的なWebプラットフォームにはなれないと思います。そうは言っても、WebFormsフレームワークが、明確に定義された豊富なイベント構造を備えた非常に簡潔で使いやすいモデルを提供する場合はたくさんあります。すべては、アプリケーションのニーズとそれを構築する人々の好みに要約されます。


11
+1、それは、ステートレスWebのステートフル環境を作成するというASP.NET Webフォームの目的の違いに関する重要なポイントです。
smartcaveman

cshtmlと比較したaspxの主な利点の1つは、デザインタブを使用してページ自体(WUSIWYGの一種)を表示および編集できることです。cshtmlファイルでは、メモ帳を使用してhtmlページを編集することもできます。あなたは「暗闇の中で」働いています。
nivs1978

@ nivs1978:これは実際にはマイナス面だと思います。あまりにも多くの開発者が、これをずさんなマークアップを書くための松葉杖として使用しています。結局のところ、デザイナは独自の内部「ブラウザ」でのみビューをレンダリングするため、ページの「ほぼ」バージョンのみを表示できます。ページがどのように表示されるかはおおまかに理解できるかもしれませんが、実際のブラウザでレンダリングされるまではわかりません。
Joel Etherton、2018

44

RazorはASP.NET MVCのビューエンジンであり、テンプレートエンジンでもあります。RazorコードとASP.NETインラインコード(マークアップと混合されたコード)は、最初にコンパイルされ、実行される前に一時的なアセンブリに変換されます。したがって、C#とVB.NETの両方がILにコンパイルされて交換可能になるように、RazorとInlineコードはどちらも交換可能です。

したがって、それはよりスタイルと興味の問題です。ASP.NETインラインコードよりもrazorの方が快適です。つまり、.aspxページよりもRazor(cshtml)ページの方が好みです。

Humanクラスを取得してレンダリングするとします。でCSHTMLファイル以下のように記述します:

<div>Name is @Model.Name</div>

いる間のaspxファイルを以下のように記述します:

<div>Name is <%= Human.Name %></div>

ご覧のとおり@、かみそりのサインはコードとマークアップの混合をはるかに簡単にします。


6
Razorの@MikaëlMayerは、Model強く型付けされたビューに使用され、modelキーワードを使用して上部で型を定義します。
Saeed Neamati 2014

あなたのための小さな質問@SaeedNeamati ......複雑なマイクロサービスベースのSOAP webAPIを使用するWebアプリケーションを構築しているとしましょう...このシナリオでは、asp.net mvc aspxまたはmvc cshtmlを使用する方が良い。個人的にはcshtml構文が簡単だと感じました。
codemilan 2017年

いい答えです...この答えは理解するのがはるかに簡単です...、少なくとも私のような初心者にとっては:)
eRaisedToX 2017年

10

構文はRazor(.cshtml/ .vbhtml)とWebForms(.aspx/ .ascx)の間で確かに異なりますが(Razorは2つのうちでより簡潔で最新のものです)、どちらもビューエンジン/テンプレートエンジン、従来のASP.NETとして使用できると誰も述べていませんWebフォームコントロールは、任意の.aspxファイルまたは.ascxファイルで使用できます(MVCアーキテクチャと統合されている場合でも)。

これは、問題に対する長年の解決策が確立され、プラグイン可能なコンポーネント(大きなファイルのアップロードコントロールなど)にパッケージ化されており、MVCサイトで使用したい場合に関係します。Razorでは、これを行うことはできません。ただし、従来のASP.NETアーキテクチャでWebフォームビューを使用する場合と同じバックエンド処理をすべて実行できます。

さらに、ASP.NET Webフォームビューには分離コードファイルを含めることができます。これにより、ビューと共にコンパイルされる個別のファイルにロジックを埋め込むことができます。ソフトウェア開発コミュニティは、密結合アーキテクチャとスマートクライアントパターンを悪い習慣と見なすように成長していますが、以前はそれが主な方法であり、.aspx / .ascxファイルでも非常に可能です。かみそりは、意図的に、そのような品質はありません。


私がそれを書き始めたとき、ジョエルは彼の編集をしていませんでした、しかし誰かがそれが役に立ったと
思った

4

CshtmlファイルはRazorによって使用されるファイルであり、この質問に対する回答として述べたように、それらの主な利点は、ユニットテスト内でレンダリングできることです。この他のトピックに対するさまざまな答えは、他の多くの興味深いポイントをもたらします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.