1.調用FrameworkInitialize()方法初始化頁面,創建控件樹。
2.然後正式開始頁面的生命週期:
2.1 設置IsPostBack屬性的值。
2.2 觸發PreInit事件,在該事件中已經可以使用IsPostBack屬性了,在這個事件中還不能訪問ViewState
--應用母版頁,應用皮膚
2.3 觸發Init()事件。遞歸觸發Init(),
//先觸發頁面中的每個控件的Init()事件,最後再觸發頁面自己的Init()事件。
--當頁面的Init()事件被觸發完畢後,然後調用TrackViewState()方法,
//開始ViewState跟蹤,然後就可以向ViewState中寫入數據了,
//但是上次ViewState中的值,現在還獲取不到。
2.4調用了LoadAllState()方法,這個方法的作用就是獲取用戶提交過來的
//隱藏域中的值,讓後解析該值,並加載到ViewState集合中,
//然後我們就可以在ViewState集合中獲取數據了。
2.5調用了ProcessPostData(_requestValueCollection,true)方法。
--在這個方法中主要做了兩件事:
--1>根據用戶提交過來的數據,判斷某個服務器端控件的數據是否發生了改變,
//如果發生了改變,則把該控件加到一個_changedPostDataConsumers集合中,
然後在後續的步驟中,會依次觸發這些控件的改變事件。
--2>把那些服務器端控件提交過來的值,通過Request獲取到,
//然後設置到某個控件中。比如:this.textBox1.Text=Request["textBox1"];。
//然後在後續的事件中就可以通過this.textBox1.Text來獲取文本框中的值了。
2.6觸發Page_PreLoad事件,頁面加載事件之前的一個事件。
//第二個參數表示是在頁面加載之前調用的ProcessPostData()方法,
//還是在頁面加載時候調用該方法。
//把服務器端標籤生成對應的html標籤。