日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET 页面生存周期概览

發布時間:2023/12/10 asp.net 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET 页面生存周期概览 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ASP.NET 頁面運行時會通過生命周期來完成一系列的處理步驟。包括初始化,控件實例化,狀態恢復和維護,運行事件處理代碼,以及外觀的呈現。了解頁面生命周期是重要的,可以根據需要針對特定情景編寫處理代碼。另外,開發自定義控件也必須熟悉頁面生命周期中正確的控件初始化指令,使用視圖狀態數據的控件屬性,以及運行控件行為邏輯(控件的生命周期依賴于頁面生命周期,因此頁面會為控件引發比自己更多的事件)。

頁面生命周期的一般情況

一般情況下,頁面通過下表列出的情景大綱。除了頁面生命周期情景之外,在請求開始和結束的時候還會發生除頁面之外的應用程序情景。

情景描述

請求頁面

頁面請求發生在頁面生命周期開始之前。當用戶發送頁面請求,ASP.NET 檢測是否需要對頁面進行處理或編譯(頁面生命周期由此開始),也可以直接用已緩存的頁面作為回應。

開始

在該步驟中會設置頁面的 Request 和 Response 屬性。頁面會根據請求是否回傳或新建來設置 IsPostBack 屬性。另外,在開始時,頁面還會設置 UICulture 屬性。

頁面初始化

頁面初始化時,頁面控件會生效并為每個控件設置 UniqueID 屬性。主題定義也被作用于頁面。如果當前請求已回傳,回傳的數據并不會被讀取,且視圖狀態也不保存任何控件的屬性值。

讀入

讀入時,如果當前請求已回傳,控件屬性會從視圖狀態和控件狀態中讀入。

驗證

驗證時會調用所有驗證器的 Validate 方法,并分別為頁面中的驗證器設置 IsValid 屬性。

處理回傳事件

如果請求已回傳,將調用所有事件處理器。

呈現

頁面呈現時會保存視圖狀態,并將所有控件輸出通過 Response 的 OutputStream 對象進行呈現。

卸載

當頁面完全呈現后調用,且發送到客戶端。同時,頁面的 Response 和 Request 屬性也被卸載并清除。

生命周期事件

在每個頁面生命周期情景下,可以對頁面引發的事件編寫自定義代碼進行處理。至于控件事件,則通過綁定屬性(如 OnClick)或編寫代碼的方式進行事件處理器綁定。

頁面也支持自動事件的觸發,ASP.NET 會監視并在特定事件引發后自動運行這些有特定名稱的事件。如果 @ 頁面指令的 AutoEventWireup 參數設置成 true(默認值為 true),頁面事件就會自動綁定到以“Page_事件”格式命名的方法(如 Page_Load 和 Page_Init)。

下表列出部分頁面生命周期中的常用事件。還有一些未被列出的原因是不常用,且主要用于 ASP.NET Web 頁面對控件的初始化和呈現。除非編寫自定義 ASP.NET 服務器控件,就需要了解這些情景。

頁面事件典型用途

Page_PreInit

  • 使用 IsPostBack 屬性檢測頁面被回傳還是第一次被請求。

  • 創建或重建動態控件。

  • 動態設置模板頁。

  • 動態設置 Theme 屬性。

  • 讀取或設置檔案屬性。

注意:如果請求被回傳,控件的值就不能從視圖狀態中恢復。在這個時候設置的控件屬性,將會覆蓋下一個情景中的值。

Page_Init

  • 讀取或初始化控件屬性。

Page_Load

  • 讀取并更新控件屬性。

控件事件

完成應用程序處理:

  • 如果頁面中包含驗證器控件,則在進行任何操作之前先檢查所有驗證控件的 IsValid 屬性。

  • 處理指定事件(如 Button 控件的 Click 事件)。

Page_PreRender

  • 完成頁面控件的最后更改。

Page_Unload

完成最后的清除工作,其中包括:

  • 關閉文件和數據庫連接。

  • 完成登入或其他請求任務。

注意:在卸載時,頁面和控件都會重新呈現,可進一步對回應過程進行修改。如果嘗試對 Response.Write 之類的方法進行,頁面就會產生并拋出一個異常。

附加的頁面生命周期考慮因素

請注意下列關于頁面生命周期的附加信息:

  • 與頁面一樣,每個 ASP.NET 服務器控件都擁有屬于自已的生命周期。比如,控件的 Init 和 Load 方法會在相應的頁面事件中得到調用。而頁面控件的 Init 方法只能在頁面 Init 方法之后調用。但是,頁面的 Load 方法能夠在控件 Load 方法之前被調用。

  • 通過控件事件可以自定義控件的外觀和內容。比如,所有控件都引發 Init,Load,Unload 等事件,盡管開發者并不經常處理這些事件。但在處理控件事件時卻經常需要用到(如 Button 控件的 Click 事件和 ListBox 控件的 SelectedIndexChanged 事件)。在某些情況下還有可能處理控件的 DataBinding 或 DataBound 事件。

  • 另外,在處理頁面生命周期事件時,可以重載 Page 派生類的方法。比如,重載頁面的 InitializeCulture 方法動態設置文化信息。創建以“Page_事件”格式命名的事件重載處理時,會先隱式調用基類的實現,因此不需要編寫代碼進行顯式調用。比如,不管是否已經重載頁面的 Page_Load 方法。ASP.NET 始終會自動調用頁面基類的 OnLoad 方法。但是,使用 override 關鍵字重載頁面的 OnLoad 方法時就需要顯式調用基類的實現。比如,重載頁面的 OnLoad 方法時必須編寫 base.Load (Visual Basic 的寫法是 MyBase.Load)來明確地運行基類的實現。

轉載于:https://www.cnblogs.com/Laeb/archive/2006/12/07/585377.html

總結

以上是生活随笔為你收集整理的ASP.NET 页面生存周期概览的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。