asp.Netページライフサイクル(3)

5067 ワード

ASP.NETプログラミングモデルのページライフサイクル1、オブジェクト初期化Initイベント:
ページ初期化のフラグはInitイベントです.ページ内のコントロール(ページ自体を含む)は、最初のFormで初めて初期化されます.ページのコントロールツリーを正常に作成した後、アプリケーションにこのイベントを起動します.Initイベントが発生すると、aspxソースファイルで静的に宣言されたすべてのコントロールは、インスタンス化され、デフォルト値が取られます.これは、ビューステータス情報がまだ使用されていないことに注意してください.OnInitメソッドは再ロードできますが、これらのコントロールインスタンスがどのような順序で作成されるかは保証されません.
ASP.NETプログラミングモデルのページライフサイクル2、ロードビュー:
初期化後、ページフレームワークはすぐにページのビューステータス(ViewState)をロードします.ビューステータスとは、TextBoxコントロールのIDとText属性値を保存できるなど、名前/値ペアのセットです.これは、一般に、1往復の行程でサーバに情報を保持するために使用され、すなわちHTTP要求と応答に参加する.
ページビューのステータスは、「input type=」hidden」フィールドに格納され、_VIEWSTAEの値を記録します.このビューの状態はASP.NE自動メンテナンス.LoadViewStateメソッドコンポーネントを書き換えることで、開発者はビューの状態を復元する方法と、その内容を内部の状態に投影する方法を制御できます.LoadView Stateメソッドは、View Stateから前回の状態を取得し、ページのコントロールツリーの構造に従ってツリー全体を再帰的に巡り、対応する状態を各コントロールに復元する方法です.
ASP.NETプログラミングモデルのページライフサイクル3、再送データの処理:
ビューステータスが復元され、ページツリーの各コントロールのステータスは、ブラウザが最後にページを表示したときのコントロールと同じです.次に、これらのコントロールのステータスを更新してクライアントに送信する必要があります.
再送データ処理フェーズは、各コントロールがその状態を更新し、対応するHTML要素のクライアントの状態を正確に反映する機会である.例えば、サーバTextBoxコントロールに対応するHTML要素は<input type=text>であり、再送データ段階において、TextBoxコントロールは<input>タグの現在値を取得し、内部状態をリフレッシュする.各コントロールは、送信するデータから適切な値を抽出し、プロパティの一部を更新します.TextBoxコントロールはTextプロパティを更新し、CheckBoxコントロールはCheckedプロパティをリフレッシュします.サーバコントロールとHTML要素のマッチング関係は、両方のIDによって決定されます.
ページフレームワークは、データを送信するコントロールごとにIpostBackDataHandlerインタフェースを実装し、LoadPostDataイベントを起動し、ページ解析によりIpostBackDataHandleインタフェースを実装したコントロールを発見し、データ更新コントロールの状態を正確に返信することができる.コントロール認識時、ASP.NETは、コントロールの一意の識別子を一致させることによって、名前値セットとの名前値ペアを持つ正しいコントロールを更新します.これは、すべての特定のページで各コントロールに一意の識別子が必要である理由の1つです.他の手順は、各識別子が環境で一意であるかどうか、コントロールの基本プロパティなど、フレームワークによって行われます.
LostPostDataメソッドのプロトタイプは次のとおりです.

 
  1. Public virtual bool LoadPostData(string postDatakey, NameValueCollection postCollection) 

PostDataKeyはコントロールを識別するキーワードであり、コントロールのIDとして理解でき、postCollectionは再送データを含む集合であり、ビュー状態値として理解できる.このメソッドはbool値を返し、trueの場合、コントロールの状態が再送によって変更されたことを示します.そうでなければfalseを返します.ページフレームワークは、trueを返すすべてのコントロールを追跡し、これらのコントロールでRaisePostDataChangeEventイベントを呼び出します.
LoadPostDataメソッドはSystem..Web.WebControls.Controlで定義され、追加された各サーバコントロールもSystemから..Web.WebControls.Controlは継承するので,データの再送処理に関与する必要はない.
ASP.NETプログラミングモデルのページライフサイクル4、ロードページLoad:
再送データ処理フェーズが終了すると、ページ内のすべてのコントロールは、クライアントに入力された変更に基づいて更新された状態になります.このとき、ページに対してOnLoadイベントが発生します.この事件については、多くの友达がよく知っていると信じています.Visual Studioを使っています.Net生成ページのPage_Loadメソッドとは、Loadイベントに応答するメソッドで、要求ごとにLoadイベントがトリガーされます.Page_ロードメソッドも実行されます.この方法では、データベースの接続文字列の準備など、ページ初期化を実行できます.イベントリファレンスでは、パフォーマンスを向上させるために、PageクラスのIsPostBackプロパティを使用して、データの再送かどうかを判断します.
ASP.NETプログラミングモデルのページライフサイクル5、返信変更通知RaisePostDataChanged:
(3)に記載されているように、IpostBackDataHandlerインタフェースを実装したすべてのコントロールが正しくデータ更新された後、各コントロールには、前回のコミット後に変更されたコントロールのデータが変更されたか、またはその値が保持されているかを識別するブール値の識別がある.そしてASP.NETは、ページを検索することによって、表示コントロールデータが変更された識別情報を検索し、RaisePostDataChangedを起動します.RaisePostDataChangedイベントは、Loadイベントが発生するまで、すべてのコントロールが更新されてから起動されません.これにより、コントロールが再送される前に、RaisePostDataChangedイベントで他のコントロールのデータが手動で変更されないことが保証されます.Pageに基づいてデータ変更のイベントを自分で定義することもできますが、通常はこのイベントはあまりにも役に立ちます.
ASP.NETプログラミングモデルのページライフサイクル6、再送イベント処理RaisePostBackEvent:
再送更新によってデータが変更され、サーバ側イベントが開始されると、再送を開始するオブジェクトはRaisePostBackEventイベントで処理されます.このようなエコーを開始するオブジェクトは、ボタンがクリックされたり、その状態が変化したりしてエコーを開始するコントロールであることが多い.たとえば、Buttonトリガ楽Onclickイベント、クライアントがテキストボックスのテキストを変更し、AutoPostBackをtrueに設定したり、TextChangedイベントをトリガしたりします.
多くのコードは、イベント駆動ロジックを制御する理想的な位置であるため、このイベントで実行されます.ブラウザに表示されるデータの正確性を保証するために、一連のエコーイベントの後、RaisePostBackEventイベントが最終的に励起される.コンシステンシの考慮に基づいて、この関数が実行されるまで変更されたコントロールが更新されません.実際のASP.NET開発でやるべきことは,このイベントの発生前にコードを処理することである.
ASP.NETプログラミングモデルのページライフサイクル7、プレプレゼンテーションPrender:
再送イベントを処理すると、ページが表示されます.このフェーズのフラグはPrenderイベントです.各コントロールは、ビューステータスを保存し、出力結果を表示する前に最後の更新操作を実行するために、この良いタイミングを利用することができます.最終的な要求の処理は、サーバの応答を発揮することに変わります.プリプレゼンテーションのこの段階は、コントロールをレンダリングする前に、StyleプロパティなどのHTMLを生成するために、最終的なプレゼンテーションの前に行われた状態の変更を実行することです.これは典型的な例で、このプリプレゼンテーションの前に、コントロールのStyleを変更することができ、プリプレゼンテーションを実行すると、レンダリングフェーズとしてHTMLのスタイル情報を表示するためにStyleを保存することができます.
ASP.NETプログラミングモデルのページライフサイクル8、保存状態SaveViewState:
次のステータスはSaveView Stateです.このステータスでは、すべてのコントロールとページ自体が自分のSaveStateセットの内容をリフレッシュできます.得られたビュー状態は、その後、シーケンス化され、ハッシュ演算され、Base 64符号化され、VI−EMSTATE非表示エンドに関連付けられる.
ASP.NETプログラミングモデルのページライフサイクル9、プレゼンテーションビューRenderer:
ここまでくると,実際にページの要求に対する処理は基本的に一段落し,RenderイベントではオブジェクトもHTMLとして提示され,HTMLも収集してクライアントに送信される.お客様はHTMLタグを受信して再編成し、最終的にお客様に表示します.Renderイベントがリロードされると、開発者はブラウザに定値のHTMLを作成することができ、ページ作成のHTMLはまだ有効ではありません.Renderメソッドは、HtmlTextWriterオブジェクトをパラメータとして使用し、それによってHTMLを生成してブラウザに送信します.これは主にカスタムコントロールの開発に使用されます.
ASP.NETプログラミングモデルのページライフサイクル10、廃棄Disposed:
コントロールを破棄する前のすべての最終クリーンアップ操作を実行します.この段階では、メモリの終了、データベースの接続など、高価なリソースへの参照を解放する必要があります.
ASP.NETプログラミングモデルのページライフサイクル11、Unloadをアンインストールする:
1ページの最後の生存フラグは、ページオブジェクトが解除される前に発生するUnloadイベントです.このイベントでは、Disposeメソッドを呼び出して、ファイル、グラフィックオブジェクト、データベース接続など、使用する重要なリソースをできるだけ解放できます.
ASP.NETプログラミングモデルのページライフサイクルの詳細については、ASP.NETプログラミングモデルのページライフサイクルが役立ちます.