ASP.NET Webフォームと比較したASP.NET MVCページの「ページライフサイクル」とは何ですか?


158

ASP.NET Webフォームと比較したASP.NET MVCページの「ページライフサイクル」とは何ですか?

(非常に)単純なサイトにある既存のページをASP.NET Webフォームから簡単に変換できるかどうかを判断するために、この「単純な」質問をよりよく理解しようとしています。

以下のプロセスの「変換」、または別のライフサイクルのいずれかを探しています。

私が現在やっていること:

(はい、私の質問に答えることができる誰もがこれをすべて知っていることを知っています-私は「ライフサイクル」の比較を得るためにトライインしているだけなので、私たちがすでに知っているすべてを埋めることから始めようと思いました)

ページのレンダリング:

  • 基本テンプレートを含むマスターページがあります
  • コンテンツを配置するマスターページの名前付き領域を提供するコンテンツページがあります。
  • 各コンテンツページのイベントハンドラーで、データベースからデータを読み込みます(ほとんどの場合読み取り専用)。
  • このデータを、グリッド、ドロップダウン、またはリピーターを表すASP.NETコントロールにバインドします。このデータはすべて、生成されたHTML内で「有効」です。そのうちのいくつかはViewStateに入ります(しかし、私はあまり深く入りません!)
  • プロパティを設定するか、ページ上のImageコントロールやTextBoxコントロールなどの特定のアイテムにデータをバインドします。
  • ページはクライアントに送信され、再利用できないHTMLとしてレンダリングされます。
  • ページで最低限必要なもの以外は、ViewStateを使用しないようにしています。

クライアント側(ASP.NET AJAXを使用しない):

  • 私はJQueryといくつかの厄介なトリックを使用して、ページ上のコントロールを見つけ、それらに対して操作を実行する場合があります。
  • ユーザーがドロップダウンから選択した場合-分離コードでC#イベントをトリガーするポストバックが生成されます。このイベントはデータベースに送られる可能性がありますが、それが何をしても、完全に新しく生成されたHTMLページはクライアントに送り返されます。
  • Page.Sessionを使用して、後で再利用する必要があるキーと値のペアを保存することができます

MVCでは、この「ライフサイクル」はどのように変化しますか?


2
リクエストパイプラインがASP.NET MVCでどのように機能するかを強調する、私のブックマークからの参照。これは通常、ASP.NET MVC自体を理解するのに役立ちます。https://docs.google.com/open?id=0B0_EIyBZvSQsOTU3N2Q2NDEtMWNjMS00ZTc0LWJmMjUtM2I0M2I5NDY2ZDNl [ simple-talk.com/content/article.aspx?article=1358](https://...
humblelistener

ページサイクルは以下の通りです:[ stackoverflow.com/questions/15066770/... [1]:stackoverflow.com/questions/15066770/...
Insan

ページサイクルは次のとおりです。stackoverflow.com
questions / 15066770

回答:


39

私はあなたが言及した箇条書きの各点についてコメントしようと試みます:

マスターページは引き続きMVCに存在し、サイトに一貫したレイアウトを提供するために使用されます。それほど新しいものではありません。

コンテンツページはMVCワールドのビューになります。彼らはまだあなたのマスターページに同じコンテンツエリアを提供します。

Webフォームのイベント処理はMVCでは使用しないでください。代わりに、コントローラークラスとそのアクションメソッドが、ビューに渡される「モデル」へのデータの読み込みを処理します。

MVCではWebフォームスタイルのデータバインディングが可能ですが、最適なソリューションではないことがわかりました。モデルクラスにデータを配置し、ビューを厳密に入力して、そのモデルに直接アクセスできるようにすることをお勧めします。次に、<%= ViewData.Model.SomeProperty %>構文を使用してデータにアクセスし、目的の場所に表示するだけです。ビューステートに関しては、それが存在することすら忘れることをお勧めします。

MVCを使用する利点の1つは、クライアントに送信するHTMLを制御できることです。その力を受け入れ、その制御を維持できるソリューションを見つけてください。Webformコントロールは、htmlを非表示にしようとするため、必要に応じてhtmlをカスタマイズすることがより困難になります。

私は、JQueryまたは他の同様に強力なJavaScriptライブラリの1つを強くお勧めします。しかし、それらを使用してHTML DOMに直接アクセスし、WebフォームコントロールのIDマングリング問題を回避する方法を学びます。

jqueryを使用して、クライアント側のドロップダウン選択にフックし、標準またはajaxスタイルのリクエストを送信できます。これらのリクエストは、新しいページ、リダイレクト、htmlフラグメント、または既存のページの更新に使用できるJSONデータを返すことができます。

asp.netセッションは、必要に応じて使用できます。


あなたの詳細な答えをありがとう。実際にMVCに戻るようになったのはJQueryでした。私はそれを簡単に見て却下しました(少なくとも今のところ)。JQueryで遊んでDOMで何かを見つけようとするだけで苦労しすぎたので、MVCに戻って詳細を調べようと思った
Simon_Weaver

MVCページにはModelモデルにアクセスするためのプロパティがあり、を経由する必要はありませんViewData
Tsahi Asher 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.