ASP.NET学习系列(三)事件
2010-03-07 22:54
267 查看
程序执行有两种模式,线性程序和事件驱动程序,显然asp.net是事件驱动的。事件驱动的本质就是程序对发生的事件进行相应来继续程序的运行。例如,一个网页上有一个按钮,页面会一直是等待状态直到按钮被点击,click事件被引发,然后程序继续运行。
通常,事件是有用户操作控件引发,但也非绝对,web服务器也可以来引发事件。有事件,就要有事件处理程序。一个事件被引发,就要有处理程序来执行事件的要求。
所有的asp.net事件都是在服务器端处理的,只不过有些是立即提交给服务器端,而有些则要等下一次也没请求时才提交到服务器端。正因为事件是在服务器端处理的,所以asp.net事件与传统的客户端应用程序的事件有所不同。后者的事件和事件处理都是在客户端进行。而在asp.net程序中,事件在客户端产生,却被在服务器端处理。
事件处理的基本流程是:当一个asp.net页面上的按钮被点击时,一个click事件产生,。因为在asp.net按钮中有一个runat被设置为“server”,这时,一个事件消息被传送到服务器。服务器检测是否有事件处理函数与click事件相关联。如果有,则事件处理将会在服务器端被执行。
事件消息是通过HTTP post方式被传递到服务器端的。asp.net自动地处理所有的捕获事件、将其传递到服务器端,以及事件处理机制。作为程序员,需要做的就是建立自己的事件处理函数。
但并非所有的事件都需要处理,类似Mouseover这样的事件,就不应该在服务器端来处理,因为这会极大地影响服务器端的性能。因为所有的服务器端处理都需要回发。如果类似的时间一定要处理,可以在客户端用脚本来处理。
几个特殊的事件:
1、应用程序事件,即application事件。application是指网站本身,因为在网站被开启接收请求时,Application_Start事件会产生。这是初始化应用程序所用到的资源的很好的时机。类似地,Application_End事件会产生于任何原因的网站停止。这时就应该关闭资源,并做好任何必备的清理工作。
2、会话事件,即session事件。session在用户第一次从你的应用程序请求页面时产生,在应用程序关闭session或session过期时结束。Session_Start事件在session启动时产生,这时可以初始化session特定的资源,如打开一个数据库连接等。当session结束时,会有一个Session_End事件产生。
3、回发事件和非回发事件,PostBack事件会导致表单被立即回发给服务器。而一些事件并不需要立即回发,这些就是非回发事件。可以强制具有非回发事件的控件以回发方式执行,方法是将控件的AutoPostBack属性设置为true。
而回发也分为两类,正常的回发是当所有页面上的非回发事件与页面的访问状态及表单值被收集在一起,所有的内容都被发送到服务器,随后生成一个新的HTML页面发送回浏览器。在该页面被重新生成并被发送回来之前,你的站点不会发生其他任何事。
通常,事件是有用户操作控件引发,但也非绝对,web服务器也可以来引发事件。有事件,就要有事件处理程序。一个事件被引发,就要有处理程序来执行事件的要求。
所有的asp.net事件都是在服务器端处理的,只不过有些是立即提交给服务器端,而有些则要等下一次也没请求时才提交到服务器端。正因为事件是在服务器端处理的,所以asp.net事件与传统的客户端应用程序的事件有所不同。后者的事件和事件处理都是在客户端进行。而在asp.net程序中,事件在客户端产生,却被在服务器端处理。
事件处理的基本流程是:当一个asp.net页面上的按钮被点击时,一个click事件产生,。因为在asp.net按钮中有一个runat被设置为“server”,这时,一个事件消息被传送到服务器。服务器检测是否有事件处理函数与click事件相关联。如果有,则事件处理将会在服务器端被执行。
事件消息是通过HTTP post方式被传递到服务器端的。asp.net自动地处理所有的捕获事件、将其传递到服务器端,以及事件处理机制。作为程序员,需要做的就是建立自己的事件处理函数。
但并非所有的事件都需要处理,类似Mouseover这样的事件,就不应该在服务器端来处理,因为这会极大地影响服务器端的性能。因为所有的服务器端处理都需要回发。如果类似的时间一定要处理,可以在客户端用脚本来处理。
几个特殊的事件:
1、应用程序事件,即application事件。application是指网站本身,因为在网站被开启接收请求时,Application_Start事件会产生。这是初始化应用程序所用到的资源的很好的时机。类似地,Application_End事件会产生于任何原因的网站停止。这时就应该关闭资源,并做好任何必备的清理工作。
2、会话事件,即session事件。session在用户第一次从你的应用程序请求页面时产生,在应用程序关闭session或session过期时结束。Session_Start事件在session启动时产生,这时可以初始化session特定的资源,如打开一个数据库连接等。当session结束时,会有一个Session_End事件产生。
3、回发事件和非回发事件,PostBack事件会导致表单被立即回发给服务器。而一些事件并不需要立即回发,这些就是非回发事件。可以强制具有非回发事件的控件以回发方式执行,方法是将控件的AutoPostBack属性设置为true。
而回发也分为两类,正常的回发是当所有页面上的非回发事件与页面的访问状态及表单值被收集在一起,所有的内容都被发送到服务器,随后生成一个新的HTML页面发送回浏览器。在该页面被重新生成并被发送回来之前,你的站点不会发生其他任何事。
相关文章推荐
- ASP.NET深入浅出系列4- 也谈委托和事件
- Asp.net控件开发学习笔记(八)----服务器控件事件
- [ASP.NET学习笔记之二十二].NET中的委托与事件研究
- 学习ASP.NET Core Razor 编程系列七——修改列表页面
- C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理
- 从0开始学习ASP.NET(2.0为例)系列——04C#/.NET FrameWork/ASP.NET相关基础知识介绍
- ASP.NET温故而知新学习系列之ASP.NET多线程编程—.NET下的多线程编程委托使用的实例(五)
- Asp.Net Web API 2 官网菜鸟学习系列导航
- 系列文章--从零开始学习ASP.NET MVC 1.0
- ABP(现代ASP.NET样板开发框架)系列之14、ABP领域层——领域事件(Domain events)
- ASP.NET温故而知新学习系列之ASP.NET中的多线程编程—.NET下的多线程编程2.1-Thread类的使用
- 学习 ASP.NET AJAX深入浅出系列课程(21):利用Microsoft AJAX Library开发客户端组建(上)(Level 300)
- ASP.NET温故而知新学习系列之ASP.NET多线程编程—.NET下的多线程编程委托使用的实例(五)
- ASP.NET Forum 学习笔记系列--Web.config
- ASP.NET温故而知新学习系列之ASP.NET多线程编程—多线程实现数组排序(十)
- ASP.NET MVC 系列文章学习导航目录
- ASP.NET温故而知新学习系列之ASP.NET多线程编程—.NET下的多线程编程临界区(八)
- ASP.net控件开发系列(三)(转)(写的不错,学习开发控件的看好)
- ASP.NET Forum 学习笔记系列--Web.config
- MVC系列学习(四)-初识Asp.NetMVC框架