ASP.NET事件
ASP.NET Events
ASP.NET有数千个事件。应用程序有事件(如应用程序的开始和结束),每一个会话也有事件(如会话的开始和结束),并且页面和多数服务器控件都会触发事件。所有的ASP.NET事件都在服务器端处理。有些事件立刻发送到服务器,另外有一些事件则被存储,直到下次页面回传到服务器。
正因为事件在服务器端处理,因此,ASP.NET事件与传统客户端应用程序中的事件稍有不同。在传统客户端应用程序中,事件本身和事件处理程序都在客户端。在ASP.NET应用程序中,事件通常都在客户端触发(例如用户单击浏览器上显示的按钮),但在服务器上处理。
考虑一个包含按钮控件的ASP.NET页面。当单击该按钮时,触发了一个Click事件。不同于HTML按钮控件,ASP.NET的按钮有一个runat=server属性,它为所有HTML按钮的标准功能添加服务器端处理属性。
当触发Click事件时,浏览器则发送页面到服务器,以便处理客户端事件。与此同时,一个事件消息传送到服务器。服务器端确定是否有与Click事件关联的事件处理程序,如果有,则在服务器端执行该事件处理程序。
事件消息通过HTTP POST方式发送到服务器。ASP.NET将自动(这是一个技术术语)处理所有捕获事件的基础结构,将它传送到服务器,并处理事件。作为程序员,您所要做的就是创建事件处理程序。
许多事件,如MouseOver,不会进行服务器端事件处理,因为那样做会降低性能。由于所有服务器端处理都需要回传(从客户端到服务器,再返回客户端的一个来回),因此,不能要求每次发生MouseOver时都回传页面。如果一定要处理这些事件,那么只能在客户端(使用脚本)处理,这超出了ASP.NET的范围。
提示:我们可以为服务器控件添加客户端处理,而且也是常常会使用的,这将在本章中稍后说明。然而,从本质上而言,它们是运行在ASP.NET基本架构的终端之上的。







