程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 記不住ASP.NET頁面生命周期的苦惱

記不住ASP.NET頁面生命周期的苦惱

編輯:關於ASP.NET

介紹

對於ASP.NET開發者,理解ASP.NET的頁面生命周期是非常重要的。主要是為了搞明白在哪裡放置特定 的方法和在何時設置各種頁面屬性。但是記憶和理解頁面生命周期裡提供的事件處理方法(method)非常困 難。互聯網上有很多關於頁面生命周期內部機制的文章,所以本文只准備簡單覆蓋技術的基礎部分,更主 要的目的是給大家提供一個簡單得記憶頁面生命周期的方法。

准確的記憶ASP.NET頁面生命周期每一個階段發生了什麼事情是比較困難的,一種便於記憶的方法是根 據各個階段的名字組合出一個縮寫。微軟的文檔給出的ASP.NET生命周期如下:

Page Request

Start

Page Initialization

Load

Validation

Postback event handling

Rendering

Unload

根據這個組合出一個縮寫非常容易。既然Page Request技術上並不是頁面生命周期的一部分(這個階 段僅僅標示我們是否開始一個頁面周期或者從緩存加載一個頁面),我們為了方便,就不包括這一階段。

S – Start

I – Initialize

L – Load

V – Validate

E – Event Handling

R – Render

這樣就組合出一個縮寫“SILVER',這個英文單詞非常好記。當然,一定要記住頁面生命周期的最後一 個環節unload沒有包括在裡面。如果你覺得有必要,你可以記憶為“SILVER-U”或者“SILVER-YOU",盡 管有點破壞這個記憶法的完美性。現在,我們非常容易就記住了頁面生命周期,接著我們總結一下每一步 都發生了什麼,都有什麼事件伴隨著發生。

1.Start

在這個階段,頁面屬性,比如Request, Response, IsPostBack和UICulture 被創建。最為一個開發人 員,大部分時候在這個階段你不需要做任何事。如果你需要調用或者重寫(override)這一階段的行為,可 以使用PreInit方法創建或者重新創建動態控件,設置master page或者theme或者讀取和設置profile property的值。要注意的一點是,如果是回傳(postback)的頁面請求,所有控件的值還沒有從view state 裡還原,如果你在這個階段設置一個控件的值,這個值有可能在下面的階段被重寫並覆蓋。

2.Initialize

這個階段對於開發人員是很重要。在這個階段,theme被應用,所有的控件都被設置了唯一的ID。開發 人員在這個階段可以調用Init, InitComplete和PreLoad 方法。微軟關於這些方法使用的建議如下:

Init – 這個事件發生在所有控件被初始化並且皮膚設置也被應用後。使用這個事件來讀取控件的初 始化值。

InitComplete – 這個事件被Page對象觸發,使用這個事件處理那些要求所有初始化工作都完成後才 能做的事情。

PreLoad - 如果在頁面或者控件進入Load事件前你有什麼要處理的,使用這個事件。Page在觸發這個 事件後,Page就會為自己和所有的控件加載view state並且處理所有Request中的postback數據。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved