Asp.net是微軟.Net戰略的一個組成部分。它相對以前的Asp有了很大的發展,引入了許多的新機制。本文就Asp.net頁面的生命周期向大家做一個初步的介紹,以期能起到指導大家更好、更靈活地操縱Asp.net的作用。當一個獲取網頁的請求(可能是通過用戶提交完成的,也可能是通過超鏈接完成的)被發送到Web服務器后,這個頁面就會接著運行從創建到處理完成的一系列事件。在我們試圖建立Asp.net頁面的時候,這個執行周期是不必去考慮的,那樣只會自討苦吃。然而,如果被正確的操縱,一個頁面的執行周期將是一道有效而且功能強大的工具。許多開發者在編寫Asp.net的頁面以及用戶控件的時候發現,如果知道整個過程中發生了什么以及在什么時候發生將對完成整個任務起到很重要的幫助作用。下面我就向大家介紹一下一個Asp.net頁面從創建到處理完成過程中的十個事件。同時,也向大家展示如何在這些事件中添加自己的代碼以達到預定的效果。
一.初始化對象
一個頁面的控件(以及頁面本身)最初應被正確的初始化。通過在你的C#文件的構造函數中聲名所有對象(如圖1),頁面就知道要創建多少對象以及它們的類型。一旦你在你的構造函數中聲名了所有的對象,你就可以通過繼承類、方法、事件或是屬性訪問它們。然而,如果你的一些對象是在Aspx文件中指定的一些控件,那么這些控件就沒有屬性可言了。同時,通過代碼訪問它們會產生一些意外的錯誤,因為這些控件實例是沒有一個確定的創建順序的(如果它們是被一起創建的)。還有,你可以通過OnInit來重載初始化事件。
二.導入Viewstate數據
在初始化事件后,所有控件只可以通過它們的ID被引用訪問(因為還沒有相應的DOM可使用)。在LoadViewState這個事件中,所有的控件將獲得它們的第一個屬性:Viewstate屬性。這個屬性最終將被返回給服務器以判斷這個頁面是已經被用戶訪問完畢還是仍然在被用戶所訪問。Viewstate屬性以“名稱/值”對的字符串方式被保存,它包含了控件的文本以及值等信息。該屬性被存儲在一個隱藏的<input>控件的值屬性里,在請求頁面時被傳遞。這種方式比起Asp3.0的維持、判斷頁面狀態的方式有了很大的進步啊。還有,你可以重載LoadViewState事件函數來對相應的控件進行值設定。
三.用LoadPostData處理Postback數據
在頁面創建的這個階段,服務器對頁面上的控件提交的表單數據(在Asp.net中稱postback數據)進行處理。當一個頁面提交一個表單時,框架就在每個提交了數據的控件上執行一個IPostBackDataHandler接口操作。然后頁面執行LoadPostData事件,解析頁面,找到每個執行了IpostBackDataHandler接口操作的控件,并用恰當的postback數據更新這些控件狀態。Asp.net是通過用NameValue集中的“名稱/值”對和每個控件的唯一的ID匹配來實現這一操作的。所以,在Asp.net的頁面上每個控件必須有一個唯一的ID,不可以出現幾個控件共有ID的情況。即使是用戶自定義的一些控件,框架也會賦予它們各自唯一的ID的。在LoadPostData事件后,就要執行下面的RaisePostDataChanged事件了。
新聞熱點
疑難解答
圖片精選