添加Page_Init事件

代码页中,默认都有个Page_Load()函数:

[html]  view plain  copy
  1. public partial class _Default : System.Web.UI.Page   
  2. {  
  3.     protected void Page_Load(object sender, EventArgs e)  
  4.     {  
  5.   
  6.     }  
  7. }  
[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. public partial class _Default : System.Web.UI.Page   
  2. {  
  3.     protected void Page_Load(object sender, EventArgs e)  
  4.     {  
  5.   
  6.     }  
  7. }  


按照这个逻辑,添加Page_Init()、Page_PreInit()消息响应函数,如下:

[html]  view plain  copy
  1. public partial class _Default : System.Web.UI.Page  
  2. {  
  3.     protected void Page_PreInit(object sender, EventArgs e)  
  4.     {  
  5.         Response.Write("Page_PreInit事件");  
  6.         Response.Write("<br />");  
  7.     }  
  8.   
  9.     protected void Page_Init(object sender, EventArgs e)  
  10.     {  
  11.         Response.Write("Page_Init事件");  
  12.         Response.Write("<br />");  
  13.     }  
  14.   
  15.     protected void Page_Load(object sender, EventArgs e)  
  16.     {  
  17.         Response.Write("Page_Load事件");  
  18.         Response.Write("<br />");  
  19.     }  
  20. }  
[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. public partial class _Default : System.Web.UI.Page  
  2. {  
  3.     protected void Page_PreInit(object sender, EventArgs e)  
  4.     {  
  5.         Response.Write("Page_PreInit事件");  
  6.         Response.Write("<br />");  
  7.     }  
  8.   
  9.     protected void Page_Init(object sender, EventArgs e)  
  10.     {  
  11.         Response.Write("Page_Init事件");  
  12.         Response.Write("<br />");  
  13.     }  
  14.   
  15.     protected void Page_Load(object sender, EventArgs e)  
  16.     {  
  17.         Response.Write("Page_Load事件");  
  18.         Response.Write("<br />");  
  19.     }  
  20. }  


这个默认的Page_Load()应该是一个照顾老的ASP.NET程序员习惯的方法。按照这种方法添加,要完全手工录入,并且录入过程中,没有智能提示,很容易出错。

 

这时,我们应该认识到,Page_Init() 和Page_PreInit(),事实上是类Page中的消息响应函数,我们是在Page的派生类_Default.aspx中使用这两个函数的。

在.NET 2.0中,事件的设计有一个建议,如果事件是给派生类使用的,就应该通过protected   virtual/override   On{EventName}的形式暴露给派生类,让派生类通过override来接受事件;而如果事件是给外部类使用的,就通过老的public   event   {EventName}的方式暴露。

所以,在ASP.NET 2.0中,通过protected   override OnInit的方式来实现Init()和PreInit()比较好。

直接输入override+空格,会有提示,按照这个提示,添加的Page_Init()、Page_PreInit()函数应该是这样的:

[html]  view plain  copy
  1. public partial class _Default : System.Web.UI.Page   
  2. {  
  3.     protected override void OnPreInit(EventArgs e)  
  4.     {  
  5.         Response.Write("Page_PreInit事件");  
  6.         Response.Write("<br />");  
  7.   
  8.         base.OnPreInit(e);  
  9.     }  
  10.     protected override void OnInit(EventArgs e)  
  11.     {  
  12.         Response.Write("Page_Init事件");  
  13.         Response.Write("<br />");  
  14.   
  15.         base.OnInit(e);  
  16.     }  
  17.     protected override void OnPreLoad(EventArgs e)  
  18.     {  
  19.         Response.Write("Page_Load事件");  
  20.         Response.Write("<br />");  
  21.   
  22.         base.OnPreLoad(e);  
  23.     }  
  24. }  
[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. public partial class _Default : System.Web.UI.Page   
  2. {  
  3.     protected override void OnPreInit(EventArgs e)  
  4.     {  
  5.         Response.Write("Page_PreInit事件");  
  6.         Response.Write("<br />");  
  7.   
  8.         base.OnPreInit(e);  
  9.     }  
  10.     protected override void OnInit(EventArgs e)  
  11.     {  
  12.         Response.Write("Page_Init事件");  
  13.         Response.Write("<br />");  
  14.   
  15.         base.OnInit(e);  
  16.     }  
  17.     protected override void OnPreLoad(EventArgs e)  
  18.     {  
  19.         Response.Write("Page_Load事件");  
  20.         Response.Write("<br />");  
  21.   
  22.         base.OnPreLoad(e);  
  23.     }  
  24. }  


当然,对于Page_Load事件,既然他放好一个Page_Load()给你,那就算了。如果不是偏执狂,没有必要修改成protected override void OnPreLoad(EventArgs e)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值