Chinaunix首页 | 论坛 | 博客
  • 博客访问: 656253
  • 博文数量: 845
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 5015
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-15 16:22
文章分类

全部博文(845)

文章存档

2011年(1)

2008年(844)

我的朋友

分类:

2008-10-15 16:36:55

  ASP.NET 2.0 Callback 使得ASP.NET Server端控件能够调用服务端的方法而不需要执行一个完整的Postback过程,也就是说使得Server端控件可以很好的支持Ajax. Callback不同于Postback之处在于向发送请求时只有ViewState和用户自定义信息被发送到端,请求完毕后,只返回用户自定义结果,而不会从Render页面。
 
  GridView控件正是使用了这个技术来实现无刷新的分页及排序功能,那么它是如何实现的哪,我们又如何在自定义控件中添加该功能哪?本文将会简单地阐述如何使用ASP.NET 2.0 Callback来实现Ajax.
 

1、ICallbackEventHandler 接口

ASP.NET Server端控件可以通过实现ICallbackEventHandler 接口来接受客户端Callback事件。
ICallbackEventHandler 接口声明:

1public interface ICallbackEventHandler
2{
3   string GetCallbackResult();
4   void RaiseCallbackEvent(string eventArgument);
5}

RaiseCallbackEvent负责处理客户端回调事件,其中方法参数eventArgument是客户端脚本在触发Callback时提供的,该方法将会依赖于eventArgument参数来进行处理。
GetCallbackResult则负责将处理结果作为String返回给客户端脚本。当Callback完成后客户端脚本将会根据得到的处理结果,进行页面局部更新。

2、CallbackEventReference

那么怎么样才能注册一段客户端脚本来触发Callback,还需要做些什么哪?

ClientScriptManager类用于管理Web页面中的客户端脚本,提供了一系列的方法来注册脚本,并且还可以获得指定客户端脚本函数的引用。通过ClientScriptManager类的GetCallbackEventReference方法我们可以获取一个对客户端函数的引用。当该函数在客户端被调用时,将启动一次客户端回调。

GetCallbackEventReference方法声明:

public string GetCallbackEventReference (
Control control,
string argument,
string clientCallback,
string context,
string clientErrorCallback,
bool useAsync
)

第一个参数指的是实现ICallbackEventHandler接口的服务器端控件;
第二个参数将被传递给在服务器端执行的RaiseCallbackEvent方法,它可以是一个Script函数调用表达式;
第三个参数是一个Script函数名,在Callback完成后,该函数将被调用,同时服务器端函数GetCallbackResult的执行结果也将作为这一个函数的参数;
第四个参数是当前执行的Callback的上下文,这个参数也可以是一个JavaScript函数调用表达式; 
第五个参数是一个JavaScript函数名,在Callback执行的过程中如果有错误产生,该函数将被调用。
第六个参数是一个Bool值来确定当前Callback应该被同步执行还是异步执行。

[1]   

【责编:Luzi】

--------------------next---------------------

阅读(334) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~