第二十三讲 ASP.NET中的事件处理

*摘要
。事件概述
。ASP.NET服务端事件
。ASP.NET服务端添加客户端事件
。通过客户端事件引发服务端事件
。事件使用的最佳实践

*事件概述
。Visual Studio项目很容易被看作一系列顺序执行的过程。事实上,多数程序都是事件驱动的——即执行流程是由外界发生的事件所确

定的。
。事件是一信信号,它告知应用程序有重要情况发生。例如,用户单击窗体上的某个控件时,窗体引发一个Click栆年并调用一个处理该

事件的过程。

*C#中使用事件需要的步骤
1.创建一个委托。
2.将创建的委托与特定事件关联
3.编写事件处理程序
4.利用编写的事件处理程序生成一个委托实例
5.把这个委托实例添加到产生事件对象的事件列表中去,这个过程又叫订阅事件。

*ASP.NET中的事件
ASP.NET支持3个主要的事件组
。第一组包含在ASP.NET生成页面时自动发生,我们使用这些事件建立页面
。第二组包含了用户与页面交互时发生的所有事件(这种最强大)
。第三种是HTML内部的事件,这些事件在浏览器上执行。

*ASP.NET窗口事件处理
。事件驱动(Event Driven)是窗口程序设计的核心,其重要性就相当于VC中的消息映射,不了解事件驱动就无法深入窗口程序设计的殿堂。
。在C#语言中,事件的处理主要有两种方法:
-委托式的事件处理模式(Delegation Event Model)
-可对重载方法(Event method)的重载。

*委托式的事件处理模式
委托式事件处理模式,就是将特定的事件委托给负责事件处理的方法来进行。
。在.NET中,类有数据成员与函数成员,事件成员。事件成员就是那些与该类的对象相关的事件。
。事件处理可通过委托关系来进行。委托关系可以这样来建立。
object.Event+=new EventHandle(Method);其含义是:如果对象object发生了Event事件,就交由方法Method来处理。一个对象可以委托多个不同的处理,"+="用来增加新的委托关系。
。Method是真正进行事件处理的地方,格式为:
public void Method(object sender,EventArgs e);
EventArgs是.NET Framework中有关事件的基础类,所以发生的事件都被包装成EventArgs类或其子类的对象。当事件发生时,Method会收到这两个参数。一旦建立了委托关系,系统自动在特定事件发生时,转而执行您所委托的事件处理方法。


*重载事件方法
。在C#中,针对不同类所相关的事件,除了定义有事件成员外,也定义了可重载的事件方法,可通过重载这些事件方法来设计你所希望的对应事件处理。
。这些可重载的事件方法名称皆为“On”开头,且被声明为“Virtual”,一个被声明成Virtual的方法,就代表它可被重载,被声明成

Override的方法也代表它可被重载,如果声明成abstract则必须被重载。例如按钮的Click事件,就有一个对应的可重载的OnClick事件方法。


*ASP.NET服务端汪厍客户端事件
。尽管从技术角度讲,Microsoft@ ASP.NET服务器控件的所有功能都可以在服务器端执行,但通常情况下通过添加客户端脚本可以大大增加服务器控件的可用性。例如,ASP.NET验证Web控件可以在服务器端执行所有的验证检查。但是,对于高版本浏览器,验证Web控件也会发送客户端脚本,以在客户端进行验证。

ASP.NET服务器控件可以发送两种客户端脚本:
。客户端脚本块:客户端脚本块通常是用javaScript编写的,其中通常包含在发生特定的客户端事件时执行的函数。
。客户端HTML属性:客户端HTML属性提供将客户端事件与客户端脚本联系在一起的方法。

ASP.NET中发送客户端脚本块
使用System.Web.UI.ClientScriptManager类包含的两个方法可以将客户端脚本代码发送到由ASP.NET Web页面提供的HTML中:
。RegisterStartupScript(key,script):在Web窗体结尾处(在</form>标识之前)发送脚本块。
。RegisterClientScriptBlock(key,script):在Web窗体的开始处(紧接着<form runat="Server">标识之后)发送脚本块。

*ASP.NET中发送HTML属性
。这种方法通常只适用于从System.Web.UI.WebControls.WebControl类导出的服务器控件,因为从这个类导出的控件会发送某些HTML元素。
。WebControl类包含一个将HTML元素属性添加到由Web控件发出的HTML元素的方法。该方法称为AddAttributesToRender(),它只有一个输入参数,即HtmlTextWriter的实例。


这一课中有几个例子还是不错的
。服务器控件的刷新问题。
。如何回车触发指定按钮的事件。

 

 

posted @ 2009-04-03 11:27  teacherzj  阅读(177)  评论(0编辑  收藏  举报