2011-12-10 143 views
26

有人問我在某段時間的採訪中解釋了ASP.NET頁面生命週期。我確實向他解釋過,但他對我的回答並不滿意。有人可以向我解釋生命週期嗎?ASP.NET頁面生命週期解釋

回答

-2

PreInit:

您可以:

檢查IsPostBack屬性,以確定這是否是第一次頁面正在處理中。 創建或重新創建動態控件。 動態設置主頁面。 動態設置主題屬性。 讀取或設置配置文件屬性值。 如果請求回發:

控件的值尚未從視圖狀態恢復。 如果您在此階段設置了控件屬性,則其值可能會在下一個事件中被覆蓋。 Init:

在單個控件的Init事件首先發生時,稍後會發生Page的Init事件。 此事件用於初始化控件屬性。 InitComplete:

在此事件中打開了ViewState的跟蹤。 在此事件中對ViewState所做的任何更改都會在下一次回發之後持續存在。 PRELOAD:

此事件處理所附帶該請求的回發數據。 加載:

在此事件中,Page對象在頁面對象本身上調用OnLoad方法,隨後調用控件的OnLoad方法。 因此,單個控件的Load事件發生在頁面的Load事件之後。 ControlEvents:

此事件用於處理特定控件事件,如Button控件的Click事件或TextBox控件的TextChanged事件。 在回傳的情況下:

如果頁面包含驗證器控件,則Page.IsValid屬性和控件驗證發生在單個控件事件觸發之前。 LoadComplete:

此事件發生在事件處理階段之後。 此事件用於加載頁面上所有其他控件等任務。 預渲染:

在這種情況下頁面的PreRender事件被稱爲第一,後來爲了孩子的控制。 用法:

此方法用於對頁面上的控件進行最終更改,如分配DataSourceId和調用DataBind方法。 PreRenderComplete:

完成每個控件的屬性在PreRender之後引發此事件。 SaveStateComplete:

在爲頁面和所有控件保存控件狀態和視圖狀態之後引發此操作。 RenderComplete:

頁面對象調用在其上存在的頁面上的每個控制此方法。 此方法寫入控件的標記以將其發送到瀏覽器。 Unload:

爲每個控件然後爲Page對象引發此事件。 用法:

使用此事件在最後清理工作的控制,如關閉打開的數據庫連接,關閉打開的文件等

1

ASP.Net Page life cycle overview

當一個ASP.Net頁面運行時,頁面經歷一個生命週期,其中ir執行一系列處理步驟。這些包括

  • 初始化
  • 實例化控制
  • Restroring和維護國家
  • 運行事件處理程序代碼,並
  • 渲染

爲什麼我們需要學習ASP.Net頁生命週期?

瞭解頁面生命週期對您而言非常重要,以便您可以在適當的生命週期階段編寫代碼以獲得所需的效果。

如果您開發自定義控件,您必須熟悉tha頁面生命週期才能正確初始化控件,填充控件行爲代碼。控件的生命週期基於頁面生命週期,頁面引發了許多您需要在自定義控件中處理的事件。

常規頁面生命週期statges:

生命週期的某些部分,當一個頁面被作爲回傳處理纔會發生。對於回發,頁面生命週期在部分回發期間(如當您使用更新面板控件時)與完整頁面回發期間相同。

  1. ,頁面請求
  2. 開始
  3. 初始化
  4. 負載
  5. 回發事件處理
  6. 渲染
  7. 卸載

1)。頁面請求:

頁面請求發生在頁面生命週期開始之前。當用戶請求頁面時,ASP.Net將確定是否需要分析和編譯頁面(因此開始pge的生命週期),或者是否可以在不運行頁面的情況下發送緩存版本的頁面作爲響應。

Read complete article on "ASP.Net Page life cycle overview" here.

-2
Partial Class _Default 
    Inherits System.Web.UI.Page 
    Dim str As String 

    Protected Sub Page_Disposed(sender As Object, e As System.EventArgs) Handles Me.Disposed 

     str += "PAGE DISPOSED" & "<br />" 
    End Sub 

    Protected Sub Page_Error(sender As Object, e As System.EventArgs) Handles Me.Error 
     str += "PAGE ERROR " & "<br />" 
    End Sub 

    Protected Sub Page_Init(sender As Object, e As System.EventArgs) Handles Me.Init 
     str += "PAGE INIT " & "<br />" 
    End Sub 

    Protected Sub Page_InitComplete(sender As Object, e As System.EventArgs) Handles Me.InitComplete 
     str += "INIT Complte " & "<br />" 
    End Sub 

    Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load 
     str += "PAGE LOAD " & "<br />" 

    End Sub 

    Protected Sub Page_LoadComplete(sender As Object, e As System.EventArgs) Handles Me.LoadComplete 
     str += "PAGE LOAD Complete " & "<br />" 
    End Sub 

    Protected Sub Page_PreInit(sender As Object, e As System.EventArgs) Handles Me.PreInit 
     str = "" 
     str += "PAGE PRE INIT" & "<br />" 
    End Sub 

    Protected Sub Page_PreLoad(sender As Object, e As System.EventArgs) Handles Me.PreLoad 
     str += "PAGE PRE LOAD " & "<br />" 
    End Sub 

    Protected Sub Page_PreRender(sender As Object, e As System.EventArgs) Handles Me.PreRender 
     str += "PAGE PRE RENDER " & "<br />" 
    End Sub 

    Protected Sub Page_PreRenderComplete(sender As Object, e As System.EventArgs) Handles Me.PreRenderComplete 
     str += "PAGE PRE RENDER COMPLETE " & "<br />" 
    End Sub 

    Protected Sub Page_SaveStateComplete(sender As Object, e As System.EventArgs) Handles Me.SaveStateComplete 
     str += "PAGE SAVE STATE COMPLTE " & "<br />" 
     lbl.Text = str 
    End Sub 

    Protected Sub Page_Unload(sender As Object, e As System.EventArgs) Handles Me.Unload 
     'Response.Write("PAGE UN LOAD\n") 
    End Sub 
End Class 
3

有在ASP.NET頁面生命週期10個事件和順序是: - 初始化,加載視圖狀態,PostBackdata,加載,驗證,事件,預渲染,保存查看狀態,渲染和卸載。

下面是ASP.NET頁面生命週期的圖片視圖,該事件中預期使用哪種代碼。我建議你閱讀這篇關於ASP.NET Page life cycle的文章,詳細解釋所有10個事件以及何時使用它們。

enter image description here

+0

好的視覺效果。我可以向管理層展示這一點,以幫助他們瞭解我想解釋由於意大利麪條代碼導致多次訪問數據庫的原因。 – JoshYates1980