我被要求在一段时间的访谈中解释ASP.NET页面生命周期。我确实向他解释过,但他对我的回答并不满意。有人可以向我解释生命周期吗?
答案 0 :(得分:32)
你可以看到:
The ASP.NET Page Life Cycle(由Solomon Shaffer撰写)
答案 1 :(得分:5)
ASP.NET页面生命周期中有10个事件,顺序是: - Init,加载视图状态,PostBackdata,加载,验证,事件,预渲染,保存视图状态,渲染和卸载。
下面是ASP.NET页面生命周期的图示视图,其中包含该事件中预期的代码类型。我建议你阅读ASP.NET Page life cycle上的这篇文章,它详细解释了所有10个事件以及何时使用它们。
答案 2 :(得分:3)
我认为微软在这方面做得最好。我只是总结他们的总结,拉出每个事件中最重要的部分。
答案 3 :(得分:3)
我推荐MSDN上的这个页面:
答案 4 :(得分:2)
其他人已经发布了答案。只是分享快捷代码,以便记住我在下面发布的asp.net生命周期阶段。
<强> R-SIL-VPRU 强>
卸载
答案 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