ASP.NET页面生命周期:方法vs事件
当页面运行一系列的方法被执行。这些方法反过来引发用户可以处理的事件,以执行各种任务,如初始化控件,填充控件属性,执行控件行为代码等。
这是一个很棒的MSDN流程图,显示了不同的方法执行,以及从这些方法引发的事件:
有关ASP.NET页面生命周期的更多信息,请参阅MSDN上的完整概述:
http://msdn.microsoft.com/en-us/library/ms178472.aspx
你可以完全覆盖这些方法,但你也必须调用基方法。通过诸如Page_PreRender等事件,您不需要。那么为什么要使用一个呢? – River
大多数情况下,这些方法只是包装事件调用,所以最终归结为是否需要在调用事件之前或之后执行您的工作。 –
PreInit -顾名思义,这个事件恰好发生在页面初始化事件开始之前。 IsPostBack,IsCallback和IsCrossPagePostBack属性在此阶段设置。此事件允许我们动态设置Web应用程序的母版页和主题。在使用动态控件时,PreInit被广泛使用。
初始 -页面Init,事件发生在Init事件之后,webform上所有单独的控件。使用此事件来读取或初始化控件属性。服务器控件从Web窗体的视图状态加载并初始化。
InitComplete -顾名思义,这个事件会在页面初始化后立即产生。
PreLoad -恰好在页面加载事件之前发生。
加载 -页面加载事件发生在该webform上所有单独控件的加载事件之前。
控制事件 -页面加载事件后,控件事件如按钮的点击,下拉列表的选定索引更改事件被引发。
加载完成 -处理控件事件后引发此事件。
PreRender - 此事件在页面呈现阶段之前引发。
PreRenderComplete -在PreRender事件之后立即引发。
卸载 -为每个控件然后为页面提出。在这个阶段,页面从内存中卸载。
MSDN有很好的细分:http://msdn.microsoft.com/en-us/library/ms178472.aspx#additional_page_life_cycle_considerations –