也谈ASP.NET页面事件

接触.Net时间不久,有关页面事件的知识,跟大家分享一下。

一个ASP.NET页面在运行时将经历一个生命周期,在生命周期中将执行一系列处理步骤。这些步骤包括初始化、实例化控件、还原和维护状态、运行事件处理程序代码以及呈现页面。在页生命周期的每个阶段中将引发一些事件,事件被引发时会运行程序员提供的事件处理代码。页面还支持自动事件连接,即ASP.NET将寻找具有特定名称的方法,并在引发特定事件时自动运行这些方法。如果@Page指令的AutoEventWireup属性设置为 true(若未定义该属性则默认为 true),页面事件将自动绑定至使用“Page_event”命名约定的方法,如 Page_Load 和 Page_Init。如AutoEventWireup属性设置为false,则页面对应.aspx.cs类中的对应事件的方法将不自动执行。 下表列出了主要的页面生命周期事件。

页 事 件

典 型 用 场

Page_PreInit

使用IsPostBack属性确定是否是第一次处理该页;创建动态控件;动态设置Theme属性;读取或设置配置文件属性值等

Page_Init

读取或初始化控件属性

Page_Preload

事件在所有回发数据处理之后但在 Load 事件之前引发

Page_Load

读取和更新控件属性

Control   events

处理特定事件,如 Button 控件的 Click 事件

Page_PreRender

对页的内容进行最后更改

Page_Unload

     执行最后的清理工作,例如关闭打开的文件和数据库连接等

以下代码可以用于验证这些事件的触发顺序:

 代码清单1

C#代码                          

  1. 1.    protected void Page_Load(object sender, EventArgs e)  
    2.      
    3.    {  
    4.      
    5.    lbText.Text += "Page_Load <hr> ";  
    6.      
    7.    }  
    8.      
    9.    protected void Page_PreInit(object sender, EventArgs e)  
    10.      
    11.    {  
    12.      
    13.    lbText.Text +=  "Page_PreInit <hr>";  
    14.      
    15.    }  
    16.      
    17.    protected void Page_Init(object sender, EventArgs e)  
    18.      
    19.    {  
    20.      
    21.    lbText.Text += "Page_Init <hr>";  
    22.      
    23.    }  
    24.      
    25.    protected void Page_PreLoad(object sender, EventArgs e)  
    26.      
    27.    {  
    28.      
    29.    lbText.Text += "Page_PreLoad <hr>";  
    30.      
    31.    }  
    32.      
    33.    protected void Page_PreRender(object sender, EventArgs e)  
    34.      
    35.    {  
    36.      
    37.    lbText.Text += "Page_PreRender <hr>";  
    38.      
    39.    }  

     

 

lbText是在页面顶端放置的一个Lable控件。运行后在浏览器中呈现如图1所示的效果。

 

需要特别说明的是Page_Unload事件,它容易被误解为关闭页面时所触发的事件。但是执行下面的代码后就会发现其实不然。

 

代码清单 2

C#代码  

1.    protected void Page_Unload(object sender, EventArgs e)  
2.      
3.    {  
4.         System.Web.HttpContext.Current.Response.Write("<Script>alert('Page_Unload');</Script>");  
5.    }  

 

保存并运行页面后就会发现,在页面加载后就看到了图2的效果。

 

    页面在请求完成后,就立刻触发了该事件。关闭页面是一个客户端的事件,请不要与之混淆。此外,如果在Page_Unload中调用Response.Write方法,还会得到一个“响应在此上下文中不可用。”的错误警告。

了解了页面事件的触发顺序,在实际网站的开发中,我们就可以根据需要在不同的事件发生时给出处理操作。

 

转载于:https://www.cnblogs.com/zhuaixia/archive/2013/01/05/2845700.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值