在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>