博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET 页生命周期事件
阅读量:6992 次
发布时间:2019-06-27

本文共 6604 字,大约阅读时间需要 22 分钟。

事件名

典型使用

PreInit

在启动阶段完成之后、初始化阶段开始之前引发。

使用该事件来执行下列操作:

  • 检查 属性来确定是不是第一次处理该页。此时还设置了 和 属性。

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

  • 动态设置主控页。

  • 动态设置 属性。

  • 读取或设置配置文件属性值。

    注意注意

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

Init

在所有控件都已初始化且已应用所有外观设置后引发。各个控件的 事件在页的 事件之前发生。

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

在页的初始化阶段结束时引发。 和 事件之间仅发生一个操作:开启对视图状态更改的跟踪。视图状态跟踪使控件可以保留所有以编程方式添加到 集合的值。在开启视图状态跟踪之前,所有添加到视图状态的值都会在回发期间丢失。控件通常在引发其 事件后立即开启视图状态跟踪。

使用此事件对要在下一个回发后务必保留的视图状态进行更改。

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

对象对 对象调用 方法,然后以递归方式对每个子控件执行相同操作,直到加载完本页和所有控件为止。各个控件的 事件在页的 事件之后发生。

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

控件事件 使用这些事件来处理特定控件事件,如 控件的 事件或 控件的 事件。

在事件处理阶段结束时引发。

对需要加载页上的所有其他控件的任务使用该事件。

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

对象在 对象上调用 事件,然后以递归方式对每个子控件执行相同操作。各个控件的 事件在页的 事件之后发生。

在呈现阶段开始之前,使用该事件对页或其控件的内容进行最后更改。

使用该事件在服务器控件呈现给页之前执行任何更新。在该事件的生存期内可以保存服务器控件视图状态的任何更改。不保存呈现阶段内所做的同样更改。
在设置了 属性的每个数据绑定控件调用其 方法之后引发。有关更多信息,请参见本主题后面的。
在为页和所有控件保存视图状态和控件状态之后发生。此时对页或控件进行的任何更改都会影响呈现,但是在下一个回发中将不会检索到这些更改

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

如果创建自定义控件,通常要覆盖此方法以输出控件的标记。不过,如果自定义控件只合并标准的 ASP.NET Web 服务器控件,不合并自定义标记,则不需要覆盖 方法。有关更多信息,请参见。

用户控件(.ascx 文件)自动合并呈现,因此不需要在代码中显式呈现该控件。

首先针对每个控件引发,继而针对该页引发。

在控件中,使用该事件对特定控件执行最后清理,如关闭控件特定数据库连接。

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

注意注意

在卸载阶段,页及其控件已被呈现,因此无法对响应流做进一步更改。如果尝试调用方法(如 Response.Write 方法),则该页将引发异常。

 

代码:

protected void Page_PreInit(object sender, EventArgs e)    {        Response.Write("Page_PreInit" + "
"); } protected void Page_Init(object sender, EventArgs e) { Response.Write("Page_Init" + "
"); } protected void Page_Load(object sender, EventArgs e) { Response.Write("Page_Load" + "
"); } protected void Page_PreRender(object sender, EventArgs e) { Response.Write("Page_PreRender" + "
"); } protected void Page_InitComplete(object sender, EventArgs e) { Response.Write("Page_InitComplete" + "
"); } protected void Page_PreLoad(object sender, EventArgs e) { Response.Write("Page_PreLoad" + "
"); } protected void Page_LoadComplete(object sender, EventArgs e) { Response.Write("Page_LoadComplete" + "
"); } protected void Page_PreRenderComplete(object sender, EventArgs e) { Response.Write("Page_PreRenderComplete" + "
"); } protected void Page_SaveStateComplete(object sender, EventArgs e) { Response.Write("Page_SaveStateComplete" + "
"); } protected void Page_Unload(object sender, EventArgs e) { // Response.Write("Page_Unload" + "
"); 使用response.write 将引发异常 } protected void Button1_Click(object sender, EventArgs e) { } protected void Button1_Init(object sender, EventArgs e) { Response.Write("服务器控件_Init" + "
"); } protected void Button1_Load(object sender, EventArgs e) { Response.Write("服务器控件_Load" + "
"); } protected void Button1_PreRender(object sender, EventArgs e) { Response.Write("服务器控件_PreRender" + "
"); } protected void Button1_Unload(object sender, EventArgs e) { }

 

效果:

 

 

测试gridview绑定数据需要的时间

前台代码

后台代码:

protected void Page_PreInit(object sender, EventArgs e)    {        Response.Write("Page_PreInit" +"--time:"+ DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + "
"); } protected void Page_Init(object sender, EventArgs e) { Response.Write("Page_Init" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + "
"); } protected void Page_Load(object sender, EventArgs e) { Response.Write("Page_Load" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + "
"); SqlDataAdapter da = new SqlDataAdapter("select * from Table_1", ConfigurationManager.ConnectionStrings["testConnectionString1"].ToString()); DataSet ds = new DataSet(); da.Fill(ds); GridView1.DataSource = ds; GridView1.DataBind(); } protected void Page_PreRender(object sender, EventArgs e) { Response.Write("Page_PreRender" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + "
"); } protected void Page_InitComplete(object sender, EventArgs e) { Response.Write("Page_InitComplete" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + "
"); } protected void Page_PreLoad(object sender, EventArgs e) { Response.Write("Page_PreLoad" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + "
"); } protected void Page_LoadComplete(object sender, EventArgs e) { Response.Write("Page_LoadComplete" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + "
"); } protected void Page_PreRenderComplete(object sender, EventArgs e) { Response.Write("Page_PreRenderComplete" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + "
"); } protected void Page_SaveStateComplete(object sender, EventArgs e) { Response.Write("Page_SaveStateComplete" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + "
"); } protected void Page_Unload(object sender, EventArgs e) { // Response.Write("Page_Unload" + "
"); 使用response.write 将引发异常 } protected void Button1_Click(object sender, EventArgs e) { } protected void Button1_Init(object sender, EventArgs e) { Response.Write("服务器控件_Init" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + "
"); } protected void Button1_Load(object sender, EventArgs e) { Response.Write("服务器控件_Load" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + "
"); } protected void Button1_PreRender(object sender, EventArgs e) { Response.Write("服务器控件_PreRender" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + "
"); } protected void Button1_Unload(object sender, EventArgs e) { } protected void GridView1_Init(object sender, EventArgs e) { Response.Write("grid 初始化开始" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + "
"); } protected void GridView1_DataBinding(object sender, EventArgs e) { Response.Write("grid要绑定数据了" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + "
"); } protected void GridView1_DataBound(object sender, EventArgs e) { Response.Write("grid 数据绑定完毕了!" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + "
"); }

效果:

转载于:https://www.cnblogs.com/Mr-Joe/archive/2012/05/02/2479246.html

你可能感兴趣的文章
JS 多维数组转一维数组
查看>>
linux系统下,查看cpu、内存、硬盘大小
查看>>
drbd之part3
查看>>
Linux实用工具
查看>>
MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合
查看>>
关于时空结转的一些说明
查看>>
应用系统架构设计
查看>>
我的友情链接
查看>>
Distributed Configuration Management Platform(分布式配置管理平台)
查看>>
java自学篇之数组1
查看>>
xenapp 6.5添加用户,显示如下提示 ima服务器上下文无效用户或组
查看>>
浅析JDK动态代理的源码
查看>>
自旋锁和互斥锁
查看>>
在网页中使用JS动态显示时间
查看>>
我的友情链接
查看>>
java开发基础【AtomicInteger】
查看>>
mybatis-spring整合
查看>>
如何设置 SPF 的 DNS 记录
查看>>
4 招教你如何在应用商店脱颖而出
查看>>
linux-yum库建立和常见使用
查看>>