网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > ASP.NET技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.如何使用FindControl查找内容页上.
.ASP.NET 2.0 Language Swithcer .
.给Asp.Net初学者的关于继承和多态.
.为ASP.NET 2.0菜单控件增加targe.
.aspx网页以HTML形式存储的几个方.
.ASP.NET中用哪种方式表格化数据.
.讲解用.NET编写串口程序的一点心.
.ASP.NET访问Oracle数据库的方法.
.ASP.Net使用缓存技术提高效率.
.ASP.NET中Datagrid常见错误.
.DataGrid的多行提交.
.Asp.net直接保存文件到客户端.
.asp.net2.0中关于ASP.NET 网站管.
..NET 1.1 下不使用 System.Web.M.
.根据xsd生成xml文档.
.如何读取XML文件内容.
.关于用ASP.Net识别远程主机服务器.
.asp.net menu "Operation aborte.
.ASP.NET控件开发之"代码紧凑原则".
.asp.net中大结果集的分页[翻译].

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

发表日期:2006-3-31


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 2.0中tablecontrol搭配masterpage的小bug 人气:5278
下一篇:ASP.NET2.0:Ilungasoft.Framework.Web之基于Callback的无刷新上传进度条控件[带源码] 人气:7282
浏览全部ASP.NET的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐