Hopes

          Start Here..

           

          理解asp.net頁面事件

           一個ASP.NET頁面在運行時將經(jīng)歷一個生命周期,在生命周期中將執(zhí)行一系列處理步驟。這些步驟包括初始化、實例化控件、還原和維護狀態(tài)、運行事件處理程序代碼以及呈現(xiàn)頁面。在頁生命周期的每個階段中將引發(fā)一些事件,事件被引發(fā)時會運行程序員提供的事件處理代碼。頁面還支持自動事件連接,即ASP.NET將尋找具有特定名稱的方法,并在引發(fā)特定事件時自動運行這些方法。如果@Page指令的AutoEventWireup屬性設(shè)置為 true(若未定義該屬性則默認為 true),頁面事件將自動綁定至使用“Page_event”命名約定的方法,如 Page_Load 和 Page_Init。下表列出了主要的頁面生命周期事件。

          頁 事 件

          典 型 用 場

          Page_PreInit

          使用IsPostBack屬性確定是否是第一次處理該頁;創(chuàng)建動態(tài)控件;動態(tài)設(shè)置Theme屬性;讀取或設(shè)置配置文件屬性值等

          Page_Init

          讀取或初始化控件屬性

          Page_Preload

          事件在所有回發(fā)數(shù)據(jù)處理之后但在 Load 事件之前引發(fā)

          Page_Load

          讀取和更新控件屬性

          Control   events

          處理特定事件,如 Button 控件的 Click 事件

          Page_PreRender

          對頁的內(nèi)容進行最后更改

          Page_Unload

               執(zhí)行最后的清理工作,例如關(guān)閉打開的文件和數(shù)據(jù)庫連接等

          以下代碼可以用于驗證這些事件的觸發(fā)順序:

           

          代碼清單 6‑1

          C#代碼  收藏代碼
          1. protected void Page_Load(object sender, EventArgs e)  
          2.   
          3. {  
          4.   
          5. lbText.Text += "Page_Load <hr> ";  
          6.   
          7. }  
          8.   
          9. protected void Page_PreInit(object sender, EventArgs e)  
          10.   
          11. {  
          12.   
          13. lbText.Text +=  "Page_PreInit <hr>";  
          14.   
          15. }  
          16.   
          17. protected void Page_Init(object sender, EventArgs e)  
          18.   
          19. {  
          20.   
          21. lbText.Text += "Page_Init <hr>";  
          22.   
          23. }  
          24.   
          25. protected void Page_PreLoad(object sender, EventArgs e)  
          26.   
          27. {  
          28.   
          29. lbText.Text += "Page_PreLoad <hr>";  
          30.   
          31. }  
          32.   
          33. protected void Page_PreRender(object sender, EventArgs e)  
          34.   
          35. {  
          36.   
          37. lbText.Text += "Page_PreRender <hr>";  
          38.   
          39. }  

           

          lbText是在頁面頂端放置的一個Lable控件。運行后在瀏覽器中呈現(xiàn)如圖6-1所示的效果。

          需要特別說明的是Page_Unload事件,它容易被誤解為關(guān)閉頁面時所觸發(fā)的事件。但是執(zhí)行下面的代碼后就會發(fā)現(xiàn)其實不然。

           

          代碼清單 6‑2

          C#代碼  收藏代碼
          1. protected void Page_Unload(object sender, EventArgs e)  
          2.   
          3. {  
          4.      System.Web.HttpContext.Current.Response.Write("<Script>alert('Page_Unload');</Script>");  
          5. }  

           

          保存并運行頁面后就會發(fā)現(xiàn),在頁面加載后就看到了圖6-2的效果。

              頁面在請求完成后,就立刻觸發(fā)了該事件。關(guān)閉頁面是一個客戶端的事件,請不要與之混淆。此外,如果在Page_Unload中調(diào)用Response.Write方法,還會得到一個“響應(yīng)在此上下文中不可用。”的錯誤警告。

          了解了頁面事件的觸發(fā)順序,在實際網(wǎng)站的開發(fā)中,我們就可以根據(jù)需要在不同的事件發(fā)生時給出處理操作。

          posted on 2012-05-10 21:26 ** 閱讀(1388) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計

          公告

          你好!

          常用鏈接

          留言簿(2)

          隨筆檔案

          文章分類

          文章檔案

          新聞檔案

          相冊

          收藏夾

          C#學(xué)習

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 泸州市| 阜城县| 乡宁县| 五指山市| 澄江县| 定结县| 仲巴县| 罗平县| 洛扎县| 富锦市| 繁昌县| 霍山县| 福清市| 绍兴县| 图们市| 抚州市| 永泰县| 武强县| 隆子县| 昂仁县| 新郑市| 濮阳市| 林西县| 丹棱县| 海林市| 伊宁县| 仙居县| 小金县| 扎赉特旗| 阳西县| 元氏县| 荔波县| 饶河县| 株洲县| 汉源县| 巴塘县| 达日县| 读书| 昂仁县| 保山市| 梓潼县|