熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

在aspx頁面中事件的執行順序[2]

2013-11-13 11:00:57  來源: .NET編程 

  保存及顯示

  下一個方法是SaveViewState不論是否是回傳頁面均會遞歸的執行以保存頁面及其所有控件的ViewStateViewState基本上保存所有與定義在aspx中的原始值不同的值不管是被代碼還是用戶所改變注意控件值是根據他們在頁面的控件樹中的位置來保存的所以如果動態控件後來加到了錯誤的位置將會導致混亂

  下一個方法是SavePageStateToPersistenceMedium真正的保存頁面的ViewSate這個方法隨同LoadPageStateFromPersistenceMediumg 一起被重寫以便保存ViewState到Session或其它自定義數據而不是用隱藏域這對於低帶寬的用戶來說是很有幫助的並且對於移動設備來說Session是默認設置下面這篇文章描述了使用以上兩種方式保存ViewState的具體細節注意在Aspnet中有個BugAspnet要求必須提交__viewstate字段即使是空的

  下一個方法是Render方法該方法遞歸的創建並發送相應控件的html給浏覽器這個方法被一些頁面模板方案重寫以添加一些通用的頁面頭與腳而不使用服務器控件他們總是有一些額外的東西注意這兒的修改只能使用純HTML因為控件在這兒已經被生成了您可以用StringBuilderStringWriterHtmlTextWriter捕獲相應的HTML輸出

  最後的方法是OnUnload這個方法會調用相應的Dispose方法這個方法提供機會以便清空該頁面中使用的非托管資源如關閉打開的文件句柄以前打開的數據庫連接等注意這個方法是在頁面已經發送到客戶端以後執行的所以它只有影響服務器對象並且它不會顯示在頁面的顯示軌跡中這就是頁面的生存期對於每一次請求都是這麼運行的


  二精簡版

  Page 執行中將按照如下順序激活事件PagePreInit>PageInit>PageInitComplite>PagePreLoad>PageLoad>PageLoadComplete>PagePreRender>

  PagePreRenderComplete

  如果頁面從令一個頁面繼承如BasePage:SystemWebUIPage在BasePage中做了一些擴展如權限檢查而其他頁面從BasePage繼承則BasePage和最終Page的事件激活順序是

  UIPreInit>PagePreInit>UIInit>PageInit>UIInitComplite>PageInitComplite>UIPreLoad>PagePreLoad>UILoad>PageLoad>UILoadComplete>PageLoadComplete>UIPreRender>PagePreRender>UIPreRenderComplete>PagePreRenderComplete

  如果使用了MasterPage則MasterPage中的事件和ContentPage中的事件按照下面順序激活

 ContentPagePreInit

    MasterInit

    ContentPageInit

    ContentPageInitComplite

    ContentPagePreLoad

    ContentPageLoad

    MasterLoad

    ContentPageLoadComplete

    ContentPagePreRender

    MasterPreRender

    ContentPagePreRenderComplete

[]  []  []  


From:http://tw.wingwit.com/Article/program/net/201311/14985.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.