![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnauMjMzkkUF5kd5tWUUFUQYFmRCRUZy0WaNFDTvl2S39CX2E0LcJjMvwlMw00LcJDMzZWe39CXt92Yu8GdjFTNuMzcvw1LcpDc0RHaiojIsJye.jpg)
頁面生命周期的主要步驟如下:
1.建立頁面控制樹,那麼如何建立頁面樹的結構呢?把它封裝成了一個方法,這個方法的名字就叫做FrameworkInitliaze() 在方法内部給aspx上所有的控件都New一個執行個體,然後構造一個樹的結構即是有一個樹的結構。隻有執行建立頁面之後,頁面上才會有控件。
2.判斷IspostBack,确定是否回發。
3.初始化
初始化包括三個階段:
1)PreInint()預初始化
A.調用OnPreinit方法引發PreInit事件
B.利用App_Themes目錄中的内容進行初始化主題。以動态實作一個PageThem
屬性值,并建立一個編譯類的執行個體。
C.應用模闆頁
2)開始初始化,将所建立的控件樹上的控件都new一個執行個體并賦預設值。
A.遞歸初始化Controls集合中的控件,初始化包括設定這些控件的屬性。
B.遞歸應用控件皮膚。
C.調用OnInit方法以引發自身的Init事件,接着遞歸調用子控件的OnInit方法來
引發他們的Init事件。
D.調用自身的TrackViewState方法重新開機自身的視圖狀态跟蹤,接着遞歸調用子控
件的TrackViewState方法重新開機自身的視圖狀态跟蹤。
3)InitComplete()初始化完成
4.加載ViewState處理回發資料:
加載頁面狀态,解析隐藏域中的ViewState,ViewState保持的值指派到對應
控件中。把需要觸發事件的控件放到一個集合當中去。
5.預加載(PreLoad)
頁面調用OnPreLoad方法以引發PreLoad事件,該事件表示頁面生命周期進
入加載階段。對應sapx.cs中的Page_Load事件。
6.加載(Load)
頁面首先調用自身的OnLoad方法以引發自身的Load事件,接着遞歸調用
Contorls集合中控件的OnLoad方法以引發它們的Load事件。
7.ProcessPostData第二次處理回發資料
8.觸發改變的事件和點選事件。
9.頁面加載完成
10.預渲染,對空間樹進行最後一次處理
11.儲存目前頁面的狀态。