Asp.Net中事件执行的顺序是什么

时间:2014-10-12 15:36:54

标签: asp.net

任何人都可以告诉我在Asp.Net中执行事件的顺序

1 个答案:

答案 0 :(得分:0)

取自http://msdn.microsoft.com/en-us/library/vstudio/ms178472(v=vs.100).aspx

<强> PreInit

在开始阶段完成之后和初始化阶段开始之前引发。

将此事件用于以下事项:

检查IsPostBack属性以确定这是否是第一次处理页面。此时也设置了IsCallback和IsCrossPagePostBack属性。

创建或重新创建动态控件。

动态设置母版页。

动态设置Theme属性。

读取或设置个人资料属性值。

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

<强>初始化

在初始化所有控件并应用任何皮肤设置后触发。单个控件的Init事件发生在页面的Init事件之前。

使用此事件来读取或初始化控件属性。

<强> InitComplete

在页面的初始化阶段结束。 Init和InitComplete事件之间只发生一次操作:打开视图状态更改的跟踪。视图状态跟踪使控件能够持久保存以编程方式添加到ViewState集合的任何值。在打开视图状态跟踪之前,添加到视图状态的任何值都会在回发中丢失。控件通常会在提升其Init事件后立即打开视图状态跟踪。

使用此事件对您希望确保在下一次回发后保留的视图状态进行更改。

<强>预加载

在页面加载自身和所有控件的视图状态之后,以及在处理Request实例包含的回发数据之后,引发。

<强>加载

Page对象调用Page对象上的OnLoad方法,然后递归执行每个子控件的相同操作,直到加载页面和所有控件。单个控件的Load事件发生在页面的Load事件之后。

使用OnLoad事件方法在控件中设置属性并建立数据库连接。

控制事件

使用这些事件来处理特定的控件事件,例如Button控件的Click事件或TextBox控件的TextChanged事件。

注意在回发请求中,如果页面包含验证器控件,请在执行任何处理之前检查Page和各个验证控件的IsValid属性。 LoadComplete

在事件处理阶段结束时举起。

将此事件用于需要加载页面上所有其他控件的任务。

<强>的PreRender

在Page对象创建了呈现页面所需的所有控件(包括复合控件的子控件)之后引发。 (为此,Page对象为每个控件和页面调用EnsureChildControls。)

Page对象在Page对象上引发PreRender事件,然后递归地为每个子控件执行相同操作。单个控件的PreRender事件发生在页面的PreRender事件之后。

在渲染阶段开始之前,使用该事件对页面内容或其控件进行最终更改。

<强> PreRenderComplete

在设置了DataSourceID属性的每个数据绑定控件之后引发调用其DataBind方法。有关详细信息,请参阅本主题后面的数据绑定控件的数据绑定事件。

<强> SaveStateComplete

在为页面和所有控件保存视图状态和控件状态后触发。此时对页面或控件的任何更改都会影响渲染,但下次回发时不会检索更改。

<强>渲染

这不是一个事件;相反,在此处理阶段,Page对象在每个控件上调用此方法。所有ASP.NET Web服务器控件都有一个Render方法,该方法写出控件的标记以发送到浏览器。

如果您创建自定义控件,通常会覆盖此方法以输出控件的标记。但是,如果您的自定义控件仅包含标准ASP.NET Web服务器控件而没有自定义标记,则无需重写Render方法。有关更多信息,请参阅开发自定义ASP.NET服务器控件。

用户控件(.ascx文件)自动合并渲染,因此您无需在代码中显式呈现控件。

<强>卸载

为每个控件引发,然后为页面引发。

在控件中,使用此事件对特定控件执行最终清理,例如关闭特定于控件的数据库连接。

对于页面本身,使用此事件执行最终清理工作,例如关闭打开的文件和数据库连接,或完成日志记录或其他特定于请求的任务。

注意在卸载阶段,页面及其控件已呈现,因此您无法对响应流进行进一步更改。如果您尝试调用Response.Write方法之类的方法,该页面将抛出异常。