一、导言
二、XMLHttp+WebForm模式
三、XMLHttp+HttpHandler模式
四、ASP.NET 2.0/3.5回调模式
五、AJAX框架模式
----------------------------------------------------------------------------------------------------------
一、导言
在这篇文章中,将介绍在ASP.NET环节下的几种常用的AJAX模式。例如:XMLHttpRequest+WebForms,XMLHttpRequest+HttpHandlers,CallBacks,以及使用AJAX框架等,下面将以示例结合的方式展开介绍这一系列常用模式。本文之后将提供示例代码下载。
二、XMLHttp+WebForm模式
或许大家都比较清楚的记得,XMLHttp+WebForm模式是ASP.NET下最原始的AJAX模式。在这种模式下,是通过JavaScript去操作XMLHttpRequest对象,发送异步请求到服务器端的WEB窗体的形式。另一方面,在服务端创建WEB窗体可以直接用来接受XMLHTTP的请求。以此,浏览器的XMLHttpRequest对象便成了服务器端和客户端的一种良好的沟通方式。
在这一节将结合一个简单的示例来介绍,希望能够帮助大家更直观的理解XMLHttp+WebForm模式的这种AJAX模式。
(1)、客户端
客户端里创建XMLHttpRequest对象以及发起异步请求我们将其JavaScript封装在一个Ajax.js文件里。这样部分方法可以达到重用,在Ajax.js里有三个方法,newXmlHttpReqeust,sendRequest和onSuccessCallBack方法,详细如下:

2

3



4

5



6

7



8



9

10



11



12

13



14

15

16

17

18

19

20

21



22

23

24

25

26

27

28

29

30



31

32



33

34



35

36

37

38



39

40

41

42

客户端调用异步发起请求前首先执行创建XmlHttpRequest对象的方法,最后通过回调函数更新页面显示。
(2)、服务端
服务端就是一个WebForm,接受客户端传递的参数然后将其转化为大写后返回给客户端。

2



3

4



5

6

7

8

9

10

三、XMLHttp+HttpHandler模式
此模式和上一种形式上没有太大的差别,只是服务端的处理对象不同,一个是WebForm一个则是HttpHandler。在HttpHandler里通过Request对象获取请求的参数,然后通过Response对象将结果返回,是直接通过HttpHandler的ProcessRequest方法来处理的。OK,既然是这样,那么我们只需要在上一模式的基础上将请求Url修改为HttpHandler就OK了,如下:

2



3

4

5



6

7

8

9

10

11

12



13

14



15

16

17

18

四、ASP.NET 2.0/3.5回调模式
ASP.NET的回调,其实很好理解,就是使用ICallbackEventHandler接口,通过实现RaiseCallbackEvent()和GetCallbackResult()方法来实现回调,最后通过调用ClientScript.GetCallbackEventReference()方法实现Ajax效果。看看下面这个示例:

2



3

4



5

6



7

8

9

10

11

12

13



14

15

16

17

18



19

20

21

22

上 面便是实现了ICallbackEventHandler,在RaiseCallbackEvent方法里将当前时间返回,客户端通过调用 ClientScript.GetCallbackEventReference()方法,来实现Ajax,客户端代码如下:

2

3



4

5

6

7

8



9

10

11

现在我们就可以通过调用callServer方法去回调服务端的方法了,html如下:
- 青格儿:谢谢分享。你写得真好。希望beniao能接着写关于MVC的教程。呵呵。
- beniao:自己的东西自己得顶.
- beniao:C#编程之委托与事件(二) 下面地址提供 示例程序下载 http://www.cnb...
- beniao:下面地址提供示例代码下载.. http://www.cnblogs.com/benia...