頁面的生命週期(待續)

2022-02-03 11:43:44 字數 1177 閱讀 2267

發現petshop的頁面載入方式很多,有page_load、page_prerender、page_preinit這些到底有什麼區別呢?

page_preinit是頁面初始化事件,他完成的事情是:

2、建立或重新建立動態控制項(這個是怎麼回事?)

asp.net後台頁面的類(下面的例子是products類)事繼承syste.web.ui.page,而這個page類又是繼承system.web.ui.control這個類,是不是在這個時候會在建立頁面類的時候,就實現了這個control類呢?拿個例子來說明會比較好吧:

public

partial

class

products : system.web.ui.page

}

3、動態設定主控頁(什麼事主控頁?)

4、動態設定theme屬性(theme應該是主題吧)

5、讀取或設定配置檔案屬性

注意:如果請求是回發請求,則控制項的值尚未從檢視狀態恢復,即:不應該在此事件中設定控制項屬性。

init事件:

完成操作:在所有控制項都已經初始化並且應用所有外觀設定後引發。使用該事件來讀取和初始化控制項屬性。

如上所知,如果上面的pre_init的事件處理完應該是不能完全設定前台控制項的屬性吧,如fontcolor屬性,那麼在init事件後就可以對這些屬性進行設定了,那麼這個事件應該多做了這些事情吧:實現了system.web.ui.webcontrol和system.web.ui.httpcontrol。

asp.net控制項結構層次圖:

init事件後應該是載入試圖狀態的,說實話什麼是試圖狀態還真不理解。在此階段完成後就可以載入控制項的viewstate屬性了。可以重寫loadviewstate以自定義狀態還原。

接下來就是處理回放資料:處理傳入窗體的資料,並相應的更新屬性。只有有回發事件的控制項參與這個階段。

載入階段(load),執行所有請求公共操作,如資料庫的查詢。並初始化和建立上圖的webcontrols和htmlcontrols的伺服器控制項。

下面的階段實在難以理解,先把張逸老師講的截圖下來,慢慢理解:

頁面的生命週期

網頁的生命週期 頁面處理發生事件的序列,編寫的 在正確的時間被執行 基類 page 提供了很多事件來實現 init事件 狀態恢復時觸發,為處理請求做好準備 load事件 網頁呈現前出發,用於初始化控制項,處理post請求時對控制項層次結構的改變 基本方案 首次請求 ispostback 初始化控制項...

頁面的生命週期

1 頁面的生命週期的九個階段 1頁面初始化 頁面被呼叫來初始化所有傳入頁面請求的生命週期所需的設定init 2載入檢視狀態 恢復以前頁面儲存的狀態,即viewstate屬性,通過重寫loadviewstate方法實現 3載入回送資料 頁面載入所有在request中快取的傳入的資料,相應的更新頁面和控...

JSP頁面的生命週期

jsp頁面的生命週期 當使用者向伺服器發出乙個請求時,首先判斷是否是第一次請求,如果是,則將該jsp檔案轉換成乙個servlet 生成位元組碼檔案,並執行jspinit 進行初始化,如果不是,則直接生成位元組碼檔案 最後解析執行,執行jspservice 來處理客戶端的請求 對每乙個請求,jsp引擎...