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

分析ASP.NET服務器控件開發-控件生命周期

2013-11-13 10:24:55  來源: .NET編程 
  服務器控件生命周期簡介
    服務器控件的生命周期是創建服務器控件最重要的概念作為開發人員必須對服務器控件生命周期深刻理解當然這不是一朝一夕就可以做到的對於學習控件開發技術的初學者可以不必掌握得非常詳細深入只需對服務器控件的生命周期中的不同階段有一個大致的了解即可
  
    在掌握服務器控件生命周期的過程中讀者要特別注意有關服務器控件狀態的相關內容在重點了解生命周期各個階段的同時對服務器控件的狀態變化要注意以下問題控件的生命周期何時保存控件和恢復其狀態何時與頁面及其他控件之間進行交互何時執行重要的處理邏輯在各個階段控件可使用哪些信息保持哪些數據控件呈現時處於哪種狀態以及何時輸出顯示標記文本等如下列舉了服務器控件生命周期所要經歷的個階段
  
    ()初始化 在此階段中主要完成兩項工作初始化在傳入Web請求生命周期內所需的設置跟蹤視圖狀態首先頁面框架通過默認方式引發Init事件並調用OnInit()方法控件開發人員可以重寫該方法為控件提供初始化邏輯此後頁面框架將調用TrackViewState方法來跟蹤視圖狀態需要注意的是多數情況下Control基類提供的TrackViewState方法實現已經足夠了只有在控件定義了復雜屬性時開發人員才可能需要重寫TrackViewState方法
  
    ()加載視圖狀態此階段的主要任務是檢查服務器控件是否存在以及是否需要將其狀態恢復到它在處理之前的請求結束的狀態因此該過程發生在頁面回傳過程中而不是初始化請求過程在此階段頁面框架將自動恢復ViewState字典如果服務器控件不維持其狀態或者它有能力通過默認方式保存其所有狀態而使用ViewState字典那麼開發人員則不必實現任何邏輯針對那些無法在 ViewState字典中存儲的數據類型或者需要自定義狀態管理的情況開發人員可以通過重寫LoadViewState方法來自定義狀態的恢復和管理
  
    ()處理回發數據若要使控件能夠檢查客戶端發回的窗體數據那麼必須實現SystemWebUIIPostBackDataHandler接口的 LoadPostData()方法因此只有處理回發數據的控件參與此階段
  
    ()加載至此階段開始控件樹中的服務器控件已創建並初始化狀態已還原並且窗體控件反映了客戶端的數據此時開發人員可以通過重寫OnLoad()方法來實現每個請求共同的邏輯
  
    ()發送回發更改通知在此階段服務器控件通過引發事件作為一種信號表明由於回發而發生的控件狀態變化(因此該階段僅用於回發過程)為了建立這種信號開發人員必須再次使用SystemWebUIIPostBackDataHandler接口並實現另一方法 RaisePostBackChangedEvent()其判斷過程為如果控件狀態因回發而更改則LoadPostData()返回true否則返回false頁面框架跟蹤所有返回true的控件並在這些控件上調用RaisePostDataChangedEvent()
  
    ()處理回發事件該階段處理引起回發的客戶端事件為了便於將客戶端事件映射到服務器端事件上進行處理開發人員在此階段可以通過實現 SystemWebUIIPostBackEventHandler接口的RaisePostBackEvent()方法來實現該邏輯由此途徑服務器控件將成功捕獲回發的客戶端事件進行服務器端的相應處理
  
    ()預呈現該階段完成在生成控件之前所需要的任何工作通常情況下是通過重寫OnPreRender()方法完成該工作需要注意的是在該階段可以保存在預呈現階段對控件狀態所做的更改而在呈現階段進行的更改則會丟失
  
    ()保存狀態如果服務器控件不維持狀態或者它有能力通過默認方式保存其所有狀態而使用ViewState字典那麼開發人員槐卦诟媒錐問迪秩魏溫呒R蛭飧霰4孀刺墓淌親遠摹H绻衿骺丶枰遠ㄒ遄刺4妫蛘呖丶薹ㄔ赩iewState字典中存儲特殊的數據類型則需要通過重寫SaveViewState()方法來實現狀態保存
  
    ()呈現表示向HTTP輸出流中寫入標記文本的過程開發人員通過重寫Render()方法使其在輸出流上自定義標記文本
  
    ()處置在此階段中通過重寫Dispose ()方法完成釋放對昂貴資源的引用如數據庫鏈接等
  
    ()卸載完成的工作與處置階段相同但是開發人員通常在Dispose()方法中執行清除而不處理Unload事件
  
    小結
  
    服務器控件在ASPNET 框架中起著舉足輕重的作用是構建Web應用程序最關鍵最重要的組成元素對於一個優秀的開發人員掌握服務器控件的基礎知識是非常重要的本文就服務器控件的概念類型生命周期等關鍵內容進行了介紹希望讀者能夠將這些內容牢固掌握為寫出精彩的服務器控件打下良好的基礎
From:http://tw.wingwit.com/Article/program/net/201311/13544.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.