在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(EventHandler)
2008-04-24 06:56
786 查看
English Version: http://dflying.dflying. href="http://www.66of.com" target=_blank>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
这个是我们熟悉的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页面中推荐使用覆写(Override)而不是事件处理(Event Handler)[转帖]
- 在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler)
- 在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler)
- Asp.net开发心得点滴[动态加载的用户控件使用事件委托,交给页面处理的事件无效问题]
- 使用HTML页面和一般处理程序模拟ASP.NET WebForms中的事件
- [Asp.Net]Repeater嵌套使用及按钮事件处理
- 在IIS中访问APS页面时提示:“最可能的原因使用的托管的处理程序,但是未安装或未完整安装asp.net“
- Asp.Net中页面运行时动态载入的UserControl内元素的事件处理的注意事项
- Asp.net生成Excel文件并下载(更新:解决使用迅雷下载页面而不是文件的问题)
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(2):处理异步调用中的异常
- Asp.net生成Excel文件并下载(更新:解决使用迅雷下载页面而不是文件的问题)
- ASP.NET - 自定义控件处理页面事件(控件与页面数据交互)的方法
- [Asp.Net]Repeater嵌套使用及按钮事件处理
- Asp.net生成Excel文件并下载(更新:解决使用迅雷下载页面而不是文件的问题)
- 在IIS中访问APS页面时提示:“最可能的原因使用的托管的处理程序,但是未安装或未完整安装asp.net“
- Asp.Net中页面运行时动态载入的UserControl内元素的事件处理的注意事项
- ASP.NET-使用Alert事件导致页面错位的解决方法
- Asp.net生成Excel文件并下载(更新:解决使用迅雷下载页面而不是文件的问题)
- 蛙蛙推荐:使用ASP.NET开发WAP2.0(XHTML MP)页面
- Asp.net生成Excel文件并下载(解决使用迅雷下载页面而不是文件的问题)