天天看點

ASP.NET 2.0頁面的生命周期

在ASP.NET 2.0中,一個ASP.NET頁面的生命周期主要為:

用戶端請求頁面

預初始化(OnPreInit)

初始化(OnInit)

完成初始化(OnInitComplete)

載入ViewState(LoadViewState)

處理回送資料(IPostBackDataHandler)

Page_OnPreLoad—》Page_OnLoad

回發更改通知(RaisePostDataChangedEvent)

處理回發事件(RaisePostBackEvent)

Page_OnLoadComplete

預呈現(OnPreRender)

完成預呈現(OnPreRenderComplete)

儲存ControlState(SaveControlState)

儲存ViewState(SaveViewState)

呈現(Render)

Page_UnLoad。 

OnPreInit:在初始化頁面OnInit事件前觸發。在這個階段裡,可以進行定義站點主題(Theme)或加載站點個性化所需要的資料資訊等操作。 

OnInitComplete:完成初始化頁面OnInit事件後觸發。 

OnPreLoad:在加載頁面OnLoad事件前觸發。 

OnLoadComplete:完成頁面加載OnLoad事件後觸發。 

OnPreRenderComplete:在完成預呈現OnPreRender事件後觸發。這是完成頁面呈現的最後一道關卡,在此之後,頁面将無法再進行任何呈現上的改動。 

SaveControlState:儲存控件狀态ControlState。ControlState是ASP.NET2.0控件新增的一個屬性,類似ViewState作用,但它們差別在于ControlState用于儲存更加重要的控件狀态資訊,以保證在禁用ViewState的情況下還可以對控件狀态進行讀寫操作。 

增加對頁面Header的控制: 

System.Web.UI.Page類新增加了Header屬性,用于對HTML頁面頭區域裡資料的操作。通過對Header屬性的跟蹤,可以發現,Header屬性儲存着一個實作IPageHeader接口的對象(該對象有LinkedStyleSheets、Metadata、StyleSheet和Title四個屬性),實際上正是通過這個對象實作對HTML頁面頭區域裡資料的操作的。

例如: 

<script runat="server"> 

void Page_Load(object sender, System.EventArgs e) 

this.Header.Metadata.Add("author", "brooks"); 

</script>

其運作結果為: 

<html> 

<head> <title>Untitled Page</title> 

<meta name="author" content="brooks" /> 

</head> 

繼續閱讀