ASP.NET ライフサイクルでは、次の方法を指定します。
ASP.NET はページを処理して動的出力を生成します
アプリケーションとそのページがインスタンス化され、処理されます
ASP.NET はページを動的にコンパイルします
ASP.NET ライフサイクルは、次の 2 つのグループに分類できます。
アプリケーションのライフサイクル
ページのライフサイクル
アプリケーションのライフサイクルには次のフェーズがあります。
ユーザーはアプリケーションのリソース (ページ) へのアクセスを要求します。ブラウザはこのリクエストを Web サーバーに送信します。
統合パイプラインが最初のリクエストを受信すると、次のイベントが発生します。
ApplicationManagerクラスのオブジェクトが作成されます。
HostingEnvironment クラスのオブジェクトは、情報リソースを提供するために作成されます。
応答オブジェクトを作成します。 HttpContext、HttpRequest、HttpResponse などのアプリケーション オブジェクトが作成され、初期化されます。
HttpApplication オブジェクトのインスタンスが作成され、リクエストに割り当てられます。
リクエストは HttpApplication クラスによって処理されます。さまざまなイベントがそのような処理リクエストをトリガーします。
ページがリクエストされると、ページはサーバー メモリにロードされ、処理されてブラウザに提供されます。次に、メモリからアンロードします。これらの各ステップで、メソッドとイベントが利用可能であり、アプリケーションの必要に応じて適合させることができます。つまり、独自のコードを作成してデフォルトのコードを置き換えることができます。
ページ クラスは、ページ上のすべてのコントロールの階層ツリーを作成します。ディレクティブを除く、ページ上のすべてのコンポーネントはコントロール ツリーの一部です。ページディレクティブにtrace = "true"を追加すると、コントロールツリーを表示できます。ページ ディレクティブをオーバーライドし、「ディレクティブ」と「イベント処理」の下でそれらをトレースします。
ページのライフサイクルの段階は次のとおりです。
初期化
ページ コントロールのインスタンス化
状態の回復とメンテナンス
イベント処理コードの実行
ページ表示
ページ サイクルを理解すると、ページ ライフ サイクルのどの段階でも特定のことが発生するようにコードを作成するのに役立ちます。また、カスタム コントロールを作成して適切なタイミングで初期化し、ビュー ステートからのデータをプロパティに設定し、コントロールの動作のコードを実行するのにも役立ちます。
ASP.NET ページのさまざまな段階を次に示します。
ページ リクエスト- ASP.NET は、ページ リクエストを受け取ると、ページを解析してコンパイルするか、キャッシュされたバージョンのページをそれに応じて応答させるかを決定します。
ページのライフ サイクルの開始- このフェーズでは、リクエスト オブジェクトとレスポンス オブジェクトがセットアップされます。古いリクエストまたはポストバックの場合、ページの IsPostBack プロパティは正しいように設定されます。ページの ULCulture プロパティも設定されます。
ページの初期化- このフェーズでは、ページ上のコントロールに一意の ID が割り当てられ、UniqueID プロパティを設定することでテーマが適用されます。新しいリクエストの場合、ポストバック データがロードされ、コントロール プロパティがビュー ステートの値に復元されます。
ページの読み込み- このフェーズでは、ビュー ステートとコントロール ステートの値を使用して、コントロール プロパティが設定されます。
検証- 検証コントロールの検証メソッドが呼び出されて正常に実行され、ページの IsValid プロパティが true に設定されます。
ポストバック イベントの処理- リクエストがポストバック (古いリクエスト) の場合、関連するイベント ハンドラーが呼び出されます。
ページ表示- この段階では、ページのビューステートとすべてのコントロールが保存されます。ページは各コントロールの表示メソッドを呼び出し、レンダリングされた出力がページの応答プロパティの OutputStream クラスに書き込まれます。
アンロード- 表示されたページはクライアントに提供され、応答や要求などのページ属性はアンロードされ、すべてクリアされます。
ページのライフサイクルの各段階で、ページはしばらく起動され、エンコードされます。イベント ハンドラーは基本的に、宣言型プロパティや OnClick などのハンドラーを使用して、イベントにバインドされた関数またはサブルーチンです。
ページのライフサイクル イベントは次のとおりです。
PreInit - PreInit はページのライフサイクルの最初のイベントです。 IsPostBack プロパティをチェックして、ページがポストバックされるかどうかを判断します。テーマとホームページを設定し、動的コントロールを作成し、値プロファイルのプロパティ値を取得および設定します。このイベントは、OnPreInit メソッドをオーバーライドするか、Page_PreInit ハンドラーを作成することで処理できます。
Init - Init イベントはコントロールのプロパティを初期化し、コントロール ツリーを構築します。このイベントは、OnInit メソッドをオーバーロードするか、Page_Init ハンドラーを作成することで処理できます。
InitComplete - InitComplete イベントにより、ビューステートの追跡が可能になります。すべてのコントロールのビューステート追跡をオンにします。
LoadViewState - LoadViewState イベントを使用すると、ビュー ステート情報をコントロールにロードできます。
LoadPostData - このフェーズでは、 タグで定義されたすべての入力フィールドの内容が処理されます。
PreLoad - PreLoad は、ポストバック データがコントロールにロードされる前に発生します。このイベントは、OnPreLoad メソッドをオーバーライドするか、Pre_Load ハンドラーを作成することで処理できます。
Load - Load イベントは最初にページによって発生し、次にすべての子コントロールに対して再帰的に発生します。コントロール ツリー内のコントロールが作成されます。このイベントは、OnLoad メソッドをオーバーロードするか、Page_Load ハンドラーを作成することで処理できます。
LoadComplete - 読み込みプロセスが完了し、制御イベント ハンドラーが実行され、ページ検証が行われます。このイベントは、OnLoad メソッドをオーバーロードするか、Page_LoadComplete ハンドラーを作成することで処理できます。
PreRender - PreRender イベントは、出力が表示される直前に発生します。このイベントを処理することにより、ページとコントロールは出力が表示される前に更新を実行できます。
PreRenderComplete - ループ内のすべての子コントロールに対して PreRender イベントが発生すると、このイベントによって事前表示フェーズの完了が保証されます。
SaveStateComplete - ページ コントロールの状態が保存されます。パーソナライゼーション、コントロール状態、およびビュー状態の情報が保存されます。
UnLoad - UnLoad フェーズは、ページのライフ サイクルの最後のフェーズです。ループ内のすべてのコントロールに対して UnLoad イベントを発生させ、最後にページ自体に対して UnLoad イベントを発生させます。最後に、すべてのリソースと参照 (データベース接続など) のクリーニングと解放が完了します。このイベントは、OnLoad メソッドを調整するか、Page_UnLoad ハンドラーを作成することで処理できます。