ASP.NET页面生命周期解释

时间:2011-12-10 14:48:45

标签: asp.net page-lifecycle

我被要求在一段时间的访谈中解释ASP.NET页面生命周期。我确实向他解释过,但他对我的回答并不满意。有人可以向我解释生命周期吗?

7 个答案:

答案 0 :(得分:32)

答案 1 :(得分:5)

ASP.NET页面生命周期中有10个事件,顺序是: - Init,加载视图状态,PostBackdata,加载,验证,事件,预渲染,保存视图状态,渲染和卸载。

下面是ASP.NET页面生命周期的图示视图,其中包含该事件中预期的代码类型。我建议你阅读ASP.NET Page life cycle上的这篇文章,它详细解释了所有10个事件以及何时使用它们。

enter image description here

答案 2 :(得分:3)

我认为微软在这方面做得最好。我只是总结他们的总结,拉出每个事件中最重要的部分。

ASP.NET Page Life Cycle Overview

答案 3 :(得分:3)

我推荐MSDN上的这个页面:

ASP.NET Page Life Cycle Overview

答案 4 :(得分:2)

其他人已经发布了答案。只是分享快捷代码,以便记住我在下面发布的asp.net生命周期阶段。

<强> R-SIL-VPRU

  1. 请求
  2. 开始
  3. 初始化
  4. 加载
  5. 验证
  6. 回复处理
  7. 渲染
  8. 卸载

    How to remember asp.net page life cycle in easy way

答案 5 :(得分:-1)

PreInit:

你可以:

检查IsPostBack属性以确定这是否是第一次处理页面。 创建或重新创建动态控件。 动态设置母版页。 动态设置Theme属性。 读取或设置配置文件属性值。 如果请求是回发:

尚未从视图状态恢复控件的值。 如果在此阶段设置控制属性,则其值可能会在下一个事件中被覆盖。 INIT:

在Init事件中,首先发生单个控件,稍后会发生Page的Init事件。 此事件用于初始化控件属性。 InitComplete:

在此事件中启用了对ViewState的跟踪。 在此事件中对ViewState所做的任何更改都会在下一次回发后保留。 预压:

此事件处理请求中包含的回发数据。 负载:

在这种情况下,Page对象调用Page对象本身的OnLoad方法,稍后调用控件的OnLoad方法。 因此,在页面的Load事件之后发生单个控件的Load事件。 ControlEvents:

此事件用于处理特定控件事件,例如Button控件的Click事件或TextBox控件的TextChanged事件。 如果是回发:

如果页面包含验证器控件,则会在触发单个控件事件之前执行Page.IsValid属性和控件验证。 LoadComplete:

此事件发生在事件处理阶段之后。 此事件用于加载页面上的所有其他控件等任务。 预渲染:

在这种情况下,首先调用页面的PreRender事件,然后调用子控件的事件。 用法:

此方法用于对页面上的控件进行最终更改,例如分配DataSourceId并调用DataBind方法。 PreRenderComplete:

在每个控件的PreRender属性完成后引发此事件。 SaveStateComplete:

在为页面和所有控件保存控件状态和视图状态后引发此问题。 RenderComplete:

页面对象在页面上显示的每个控件上调用此方法。 此方法写入控件的标记以将其发送到浏览器。 卸载:

为每个控件引发此事件,然后为Page对象引发此事件。 用法:

在控件中使用此事件进行最终清理工作,例如关闭打开的数据库连接,关闭打开的文件等。

答案 6 :(得分:-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