asp.Netページイベント実行順序(2)


ページがコミットされると、最初のメソッドは常にコンストラクション関数です.コンストラクション関数でカスタム属性やオブジェクトを初期化できますが、ページが完全に初期化されていないため、多少の制限があります.
一、初期化・ページが要求されたときの最初の方法は常に構造関数である.コンストラクション関数でカスタム属性やオブジェクトを初期化できますが、ページが完全に初期化されていないため、多少の制限があります.特に、HttpContextオブジェクトを使用する必要があります.現在使用可能なオブジェクトには、QueryString、Form、Cookiesのセット、Cacheオブジェクトが含まれます.注意:コンストラクション関数ではSessionは使用できません.・次の方法はAddParsedSubObject方法であり、この方法はすべての独立したコントロールを追加し、ページを1つのコントロールセットツリーに構成する.この方法は、ページテンプレート(Page Template Solutions)の特殊なコントロールにページコンテンツを追加するために、いくつかの高度なページテンプレートソリューション(Page Template Solutions)によって書き換えられることが多い.この方法はすべてのページコントロールと対応する各サブコントロールに再帰的に適用され、すべてのコントロールはこの方法で最初の初期化を開始します.・ページクラスの次の方法は、DeterminePostBackModeである.この方法では、IsPostBackの値と関連するイベントを変更できます.データベースからViewStateをロードする必要がある場合、この方法は特に便利です.なぜなら、ViewStateはIsPostBackが本物の場合にのみリカバリされるからです.空を返すと、非再送が強制的に実行され、Requestが戻る.Formは強制的に返信を実行します.特別な場合を除き、これは他のイベントにも影響を与えるため、これを操作することをお勧めしません.・次に実行されるメソッドはOnInitメソッドであり、一般的にはこれが最初に実際に使用されるメソッドである.このメソッドがトリガーされると、すべてのページ定義のコントロールが初期化されます.これは、ページで定義されたすべての値が対応するコントロールに適用されることを意味します.ただし、ViewStateと返信された値はコントロールに適用されないため、コードまたはユーザーによって変更された値はコントロールに復元されていません.この方法は通常、ダイナミックコントロールを作成し、再作成するのに最適な場所です.二、リカバリとロード・次の方法では、LoadPageStateFromPersistenceMediumはページが返信されたときにのみ実行されます.Sessionまたはカスタムストレージ方式を使用しているため、後述するViewState保存方式に影響を与える方法SavePageStateToPersistenceMediumを変更した場合は、この方法を書き換える必要があります.デフォルトのインプリメンテーションでは、ViewStateはBase 64形式で符号化され、ページの非表示ドメインに保存されます.この文書で説明した方法で、ViewStateを変更して上記の2つの方法で保存することができます.注意:この方法では、ページまたはページコントロールにView Stateが実際にロードされていません.・View Stateが得られると、次の方法LoadView Sateは、ページおよび各ページコントロールまたはサブコントロールに再帰的に復元される.このメソッドが実行されると、各コントロールは前回の状態に戻りますが、ViewStateの一部ではないため、ユーザーがコミットしたデータはコントロールに適用されません.この方法は、他のイベントで動的に生成されたコントロールの値を復元するために主に使用されます.値は、手動でViewSateに保存され、現在は失効しています.・次の方法はProcessPostDataであり、この方法も同様に再送時に実行され、書き換えは許されない.これはページベースクラスのプライベートメソッドである.この方法は、コントロールの名前を一致させることによって、対応するユーザーがコミットしたコントロールの値を復元します.これは、ページ全体が完全に復元されていることを意味します.唯一覚えておきたいのは、すべてのダイナミックコントロールの作成はこの方法の前にしなければならないことです.この方法も後の変更イベントを記録する方法です.・次の方法はOnLoad方法であり、通常、ページ生存期間がすべての値を回復した最初の場所であるため、最も多くの方法が用いられる.ほとんどのコードは、IsPostBackを判断することによって、コントロールの状態を再設定するかどうかを決定します.このメソッドでValidateを呼び出し、IsValidの値を確認することもできます.この方法では、動的コントロールを作成することもでき、現在のページのステータスに追いつくために、コントロールのすべての方法が実行されます.ViewSateは含まれますが、返信の値は含まれません.三、イベント処理・次のメソッドはProcessPostDataであり、実際には前のメソッドの別の呼び出しであり、それは依然として返信時にのみ実行され、プライベートメソッドであるため書き換えられない.ページの実行軌跡を初めて見ると、この方法は余計だと思うかもしれません.しかし、実際には、OnLoadで作成されたダイナミックコントロールにもリターンの値が必要であるため、この方法が必要です.その後作成されたコントロールは、ViewStateを取得できますが、返信された値を取得することはできません.値変更イベント(Change Event)はトリガーされません.・次の方法、RaiseChangedEventsも、返信ページでのみ実行され、ベースクラスのプライベートメソッドであるためすべて継承できない.ページ生存期間全体において、ここでは、前のProcessPostDataで記録されたコントロールの値とコミットされた値が異なるかによって、値変更イベントがトリガーされます.Validateを呼び出すか、IsValidの値を確認する必要があるかもしれません.ここでは、複数の値がイベントの実行順序を変更することを特に説明していない.・次の方法、RaisePostBackEventは、同様にベースクラスであるプライベートメソッドが継承できないため、同じく返信ページのみで実行される.AutoPostBackを使用しない限り、フォームイベントを実際にコミットする場所、特にボタンやjavascriptを使用してフォームをコミットする場所などです.手動で呼び出されていない場合、検証コントロールが使用されている場合、Validateが呼び出されます.注意IEにバグがある場合、コミットは許可されますが、イベントはトリガーされません.・次の方法はOnPreRendererです.一般的には、クライアントがページを表示する前にページとそのコントロールを変更する最後の機会です.また、このメソッドでダイナミックコントロールを作成することもできます.すべてのメソッドは、現在のページに追いつくように実行されます.ViewSateも含まれますが、プライベートメソッドは実行されません.これは、返信された値がなく、イベントがトリガーされないことを意味します.IEのバグのため、PostBackにイベントが追いつかない良い場所です.四、保存及び表示・次の方法はSaveView Stateであり、返信ページであるかどうかにかかわらず、ページ及びそのすべてのコントロールのView Stateを保存するために再帰的に実行される.ViewStateは、基本的にaspxで定義された元の値とは異なるすべての値を保存します.コードによってもユーザーによっても変更されます.注意:コントロール値は、ページのコントロールツリー内の位置に基づいて保存されるため、ダイナミックコントロールが誤った位置に追加されると混乱します.・次の方法は、SavePageStateToPersistenceMediumの本格的なページ保存のためのViewSateです.この方法は、非表示ドメインではなく、LoadPageStateFromPersistenceMediumgとともに書き換えられ、ViewStateをSessionまたは他のカスタムデータに保存します.これは、低帯域幅のユーザーにとって非常に役立ちます.また、モバイルデバイスの場合、セッションはデフォルト設定です.次の記事では、上記の2つの方法でViewStateを保存する具体的な詳細について説明します.注意Asp.インターネットにBug:Aspがあります.Net要求は必ず提出しなければならない_viewstateフィールドは、空でもかまいません.・次の方法は、対応するコントロールのhtmlをブラウザに再帰的に作成して送信するRenderメソッドである.この方法は、サーバコントロールを使用するのではなく、汎用的なページヘッダと足を追加するために、いくつかのページテンプレートスキームに書き換えられています.彼らはいつも追加のものを持っています.ここでの修正は、コントロールが生成されているため、純粋なHTMLしか使用できません.StringBuilder、StringWriter、HtmlTextWriterを使用して、対応するHTML出力をキャプチャできます.・最後の方法はOnUnloadであり、この方法は対応するDisposeメソッドを呼び出す.この方法は、開いているファイルハンドルを閉じる、以前開いていたデータベース接続など、ページで使用されていた非管理リソースを空にする機会を提供します.この方法は、ページがクライアントに送信された後に実行されるため、サーバオブジェクトに影響を与えるだけで、ページの表示軌跡には表示されません.これがページの生存期間であり,要求ごとにこのように実行される.表1:ページイベントのまとめ
メソッドコールバックコントロール
  ConstructorAlwaysAll

  AddParsedSubObjectAlwaysAll

  DeterminePostBackModeAlwaysPage

  OnInitAlwaysAll

  LoadPageStateFromPersistenceMediumPostBackPage

  LoadViewStatePostBackAll

  ProcessPostData1PostBackPage

  OnLoadAlwaysAll

  ProcessPostData2PostBackPage

  RaiseChangedEventsPostBackPage

  RaisePostBackEventPostBackPage

  OnPreRenderAlwaysAll

  SaveViewStateAlwaysAll

  SavePageStateToPersistenceMediumAlwaysPage

  RenderAlwaysAll

  OnUnloadAlwaysAll

 
 
回転元:http://hi.baidu.com/zzticzh/blog/item/918d8c44e2c2be49510ffe9a.html