论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Asp.net教程
Tag:静态页面,treeview,gridview,repeater,dataset,sqldatareader,ado.net,上传,三层,ajax,xml,留言本,新闻发布,商城,注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,触发器,socket,form认证,登录,视频教程

在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler)

文章类别:Asp.net | 发表日期:2008-10-5 22:11:28

English Version: http://dflying.dflying.net/1/archive/101_prefer_overrides_to_event_handlers_in_aspnet_page.html

这个是我们熟悉的Page_Load()方法。实际上它是一个Event Handler,当定义在System.Web.UI.Page中的Load事件触发时,它开始执行。

// use event handler
protected void Page_Load(object sender, EventArgs e)
{
    // logic here
}

 


这个是System.Web.UI.Page类中OnLoad()方法的Override。 // use override
protected override void OnLoad(EventArgs e)
{
    // logic here
    base.OnLoad(e);
}
虽然上述两种做法都能完成相同的功能,但是我推荐使用Override的做法。

首先,事件处理机制是用来实现独立的对象之间通信的。例如,当一个Button被点击时,页面可以通过事件处理机制得知这一消息并进行处理。但在这个例子中,Load事件定义在System.Web.UI.Page中,本身也是我们页面中的一部分。这样在一个类的内部发出事件并又在其本身处理这个事件的做法将显得很奇怪。

其次,效率上考虑,事件处理不及Override。这是由.NET Framework的实现所决定的并且我们都已经了解。

还有,使用事件时需要维护两个地方:事件处理方法的加载(attach)以及事件处理函数本身的定义。虽然ASP.NET 2.0已经提供了一些预定义的事件处理方法名,但还有好多开发者在使用ASP.NET 1.1。而使用Override则只需要维护Override函数本身。

当然,事件处理机制有它自身的好处,比如可以很方便的在运行时指定事件处理方法,允许分布在各处的多个事件处理方法依次执行。但在ASP.NET页面中我们不会用到这些特性。我们总会有一个方法来定义页面被加载的行为,我们也不会有多个Page_Load()方法在一个页面中出现。

更加泛化一点,不单单在ASP.NET页面中,其他情况下我们也应该尽可能的使用Override而不是Event。
使用Override的时候需要注意的是不要忘记调用基类的方法(Visual Studio会替你做好的)。

 

出处:Dflying Chen BLOG

视频教程列表
文章教程搜索
 
Asp.net推荐教程
Asp.net热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058