任何人都可以告诉我在Asp.Net中执行事件的顺序
答案 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方法之类的方法,该页面将抛出异常。