ASP.NET WebForms と比較した場合、ASP.NET MVC ページの「ページ ライフサイクル」とは何ですか?
私は、(非常に)単純なサイトにある既存のページが ASP.NET WebForms から簡単に変換できるかどうかを判断するために、この「単純な」質問をよりよく理解しようとしています。
私が探しているのは、以下のプロセスの「変換」、または代替ライフサイクルのいずれかです。
現在やっていること:
(はい、私の質問に答えられる人なら誰でもすでにこのことを知っていることはわかっています。私は単に「ライフサイクル」の比較をしようとしているだけなので、まずは私たち全員がすでに知っていることを埋めることから始めようと思いました)
ページのレンダリング:
- 基本テンプレートを含むマスターページがあります
- コンテンツを配置するマスター ページから名前付き領域を提供するコンテンツ ページがあります。
- 各コンテンツ ページのイベント ハンドラーで、データベースからデータを読み込みます (ほとんどは読み取り専用)。
- このデータを、グリッド、ドロップダウン、またはリピーターを表す ASP.NET コントロールにバインドします。このデータはすべて、生成された HTML 内に存在します。その一部は ViewState に入ります (ただし、これについては詳しく説明しません)。
- ページ上の Image コントロールや TextBox コントロールなどの特定の項目にプロパティを設定したり、データをバインドしたりします。
- ページは再利用不可能な HTML としてレンダリングされてクライアントに送信されます。
- ページに最低限必要なもの以外では ViewState を使用しないようにしています。
クライアント側 (ASP.NET AJAX を使用しない):
- ページ上のコントロールを見つけて操作を実行するために、JQuery といくつかの厄介なトリックを使用する場合があります。
- ユーザーがドロップダウンから選択すると、ポストバックが生成され、コードビハインドで C# イベントがトリガーされます。このイベントはデータベースに送信される可能性がありますが、どのような処理が行われても、完全に新しく生成された HTML ページがクライアントに送り返されることになります。
- 後で再利用する必要があるキーと値のペアを保存するためにPage.Sessionを使用する場合があります
では、MVC ではこの「ライフサイクル」はどのように変化するのでしょうか?
ベストアンサー1
あなたが挙げた箇条書きのそれぞれについてコメントしてみたいと思います。
マスター ページは MVC にまだ存在し、サイトに一貫したレイアウトを提供するために使用されます。特に新しい点はありません。
コンテンツ ページは MVC の世界ではビューになります。マスター ページに同じコンテンツ領域が提供されます。
MVC では Web フォームのイベント処理は使用しないでください。代わりに、コントローラー クラスとそのアクション メソッドが、ビューに渡される「モデル」へのデータの読み込みを処理します。
MVC では Web フォーム スタイルのデータ バインディングが可能ですが、最適なソリューションではないと思います。モデル クラスにデータを配置し、ビューを厳密に型指定して、そのモデルに直接アクセスできるようにする方がよいでしょう。その後は、構文を使用して<%= ViewData.Model.SomeProperty %>
データにアクセスし、目的の場所に表示するだけです。ビューステートについては、その存在すら忘れることをお勧めします。
MVC を使用する利点の 1 つは、クライアントに送信する HTML を制御できることです。その力を活用して、その制御を維持できるソリューションを見つけてください。Web フォーム コントロールは HTML を隠そうとするため、必要なときに HTML をカスタマイズするのが難しくなります。
JQuery または他の同様に強力な JavaScript ライブラリのいずれかを強くお勧めします。ただし、それらを使用して HTML DOM に直接アクセスし、Web フォーム コントロールの ID マングリングの問題を回避する方法を学んでください。
jQuery を使用して、クライアント側のドロップダウン選択にフックし、標準または Ajax スタイルのリクエストを送信できます。これらのリクエストは、新しいページ、リダイレクト、HTML フラグメント、さらには既存のページを更新するために使用できる JSON データを返すことができます。
必要に応じて asp.net セッションを使用できます。