在开发ASP.NET应用程序的过程中, 我们经常需要在不刷新页面的情况下回调服务器的一些信息.人们喜欢用一些集成的的类库来处理,其实,ASP.NET本身已以内置了服务器回调的信息.下面是一个简单的例子:
要实现回调,服务器必须实现 ICallbackEventHandler 接口.
如下:
public partial class _Default : System.Web.UI.Page ,ICallbackEventHandler
{
}
方法:Page.ClientScript.GetCallbackEventReferenc
下面是WebForm_DoCallback()方法的原形:
function WebForm_DoCallback(eventTarget,eventArgument, eventCallback, context, errorCallback, useAsync); eventTarget:指回调事件所指向的对象,一般使用:"__Page"来代替. eventArgument:指回调事件使用的参数,这个参数一定要是字符串类型的.如果要传递对象的话,可以把对象转换成 字符串或其它可以还原为对象的字符串.这个参数会发送到服务器上,由上面的类中的方法: RaiseCallbackEvent(String eventArgument)所接收,即在服务器上,我们使用 RaiseCallbackEvent(String eventArgument)的参数就是客户端上传的参数. eventCallback:指当服务器事件执行完成后,会调用eventCallback参数所指向的方法.这个方法由两个参数.一般 是这样:function callbackEvent(arg,context){......}.这里,第一个参数是由服务器上的方法 GetCallbackResult()所返回的字符串.也必须是字符串类型的数据.第二个参数是我们回调 服务器时WebForm_DoCallback()方法中的context参数,它没有上传到服务器,而是 在客户端传送的,虽然它是字符串类型,但实际上它可以是任何javascript支持的数据类型. 如数组,对象等等. 下面是一段客户端代码:实现简单的回调. <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>无标题页</title> <script type="text/javascript"> function DoCallBack(arg,evt,context) { WebForm_DoCallback("__Page",arg,evt,context,null,false); } function btnCallback(arg,context) { DoCallBack(arg,this.callbackEvent,context);} functioncallbackEvent(arg,context) { alert(arg + context); } </script> </head> <body> <form id="form1" runat="server"></form> <input type="button" value="Callback" 'Message')"/> </body> </html> 在这里我对WebForm_DoCallback进行了一下简单的封装,方面直接调用回调的方法.需要注意的是:我们要实现回调的话, 在aspx页面中必须有一个运行在服务器上的form否则的话,服务器是不会在客户端的页面上导出实现回调 功能的脚本的.