page_loadとpage_Initの違い


デフォルトで新しいページを作成すると、Page_が表示されます.Loadイベントのデフォルトコード、Page_Initはページに重要なもう一つのイベントです.以下、Page_について説明します.Init:ページがロードされない前、つまりページが初期化される前にPage_ロード前に呼び出されたものは、コントロールがロードされる前にクライアント検出やこれらの操作などを行うことができます.しかし、このイベントは現在のユーザーにとって1回しか行われません.つまり、このページに初めてアクセスしたときに1回実行されます.Page_Load:PageでInitの後に実行(くだらない話)し、制御やページの他の内容をロードします.クライアントがリフレッシュまたはコミットするたびに、Page_Loadイベントはページを再描画し、現在のページを新しいページとして処理します.区別がはっきりしているので、この違いの利用についてもう一度お話しします.私が考えているのは、この点を利用してページのクリックやアクセス回数のより正確なカウントをすることができます.例えばPage_Initではカウントのコードを実行し、このページが同じユーザーにブラシされたり操作されたりしたとき、クリックは常に1回で、カウントは科学的です.もちろん、別のページに行って戻ってくるのは防げません.また、例えば私の以前のウェブサイトのアクセス統計、IPアクセスとウェブサイトの総ページアクセス回数を記録して、すべて利用することができます.一つのASP.NETページでは、実行時にライフサイクルが経過し、ライフサイクルで一連の処理手順が実行されます.これらの手順には、初期化、インスタンス化コントロール、リストアおよびメンテナンスステータス、イベントハンドラコードの実行、およびページの表示が含まれます.ページライフサイクルの各フェーズでイベントが発生し、イベントが開始されるとプログラマが提供するイベント処理コードが実行されます.ページは自動イベント接続、すなわちASPもサポートする.NETは、特定の名前のメソッドを探し、特定のイベントが発生したときに自動的に実行します.@PageコマンドのAutoEventWireupプロパティがtrueに設定されている場合(このプロパティが定義されていない場合はデフォルトでtrue)、ページイベントはPage_eventの命名規則を使用する方法(Page_event)に自動的にバインドされます.LoadとPage_Init.次の表に、主なページライフサイクルイベントを示します.
 
ページの件
典型的な用途
Page_PreInit
IsPostBackプロパティを使用して、ページが最初に処理されたかどうかを決定します.ダイナミックコントロールを作成します.動的設定Theme属性;プロファイル属性値の読み込みや設定など
Page_Init
コントロール属性の読み込みまたは初期化
Page_Preload
イベントは、すべての再送データ処理後に発生しますが、Loadイベントの前に発生します.
Page_Load
コントロールのプロパティの読み取りと更新
Control events
ButtonコントロールのClickイベントなどの特定のイベントの処理
Page_PreRender
ページの内容を最後に変更
Page_Unload
開いているファイルやデータベース接続を閉じるなど、最後のクリーンアップを実行します.
 
次のコードを使用して、これらのイベントのトリガ順序を検証します.
コードリスト6 1
protected void Page_Load(object sender, EventArgs e)
{
lbText.Text += "Page_Load <hr> ";
}
protected void Page_PreInit(object sender, EventArgs e)
{
lbText.Text +=  "Page_PreInit <hr>";
}
protected void Page_Init(object sender, EventArgs e)
{
lbText.Text += "Page_Init <hr>";
}
protected void Page_PreLoad(object sender, EventArgs e)
{
lbText.Text += "Page_PreLoad <hr>";
}
protected void Page_PreRender(object sender, EventArgs e)
{
lbText.Text += "Page_PreRender <hr>";
}

lbTextは、ページの先端に配置されたTableコントロールです.実行後、図6-1に示すような効果をブラウザに表示します.特に説明が必要なのはPage_Unloadイベントは、ページを閉じるときにトリガーされるイベントと誤解されやすい.しかし、次のコードを実行すると、実はそうではないことがわかります.
コードリスト6 2
protected void Page_Unload(object sender, EventArgs e)
{
System.Web.HttpContext.Current.Response.Write
("<Script>alert('Page_Unload');</Script>");
}

ページを保存して実行すると、ページのロード後に図6-2の効果が表示されます.
498)this.style.width=498;"border=0> 
図6-1
498)this.style.width=498;"border=0> 
図6-2
ページはリクエストが完了すると、すぐにイベントをトリガーします.ページを閉じるのはクライアントのイベントです.混同しないでください.また、Page_UnloadでResponseを呼び出す.Writeメソッドでは、「このコンテキストでは使用できない応答」も得られます.に表示されます.
ページイベントのトリガ順序を理解し,実際のウェブサイトの開発では,必要に応じて異なるイベントが発生したときに処理操作を与えることができる.