使用ICallbackEventHandler接口更高效实现Ajax
2013-02-19 13:28
309 查看
使用ICallbackEventHandler接口可以方便地高效地实现Ajax功能
1、处理页面需实现ICallbackEventHandler接口,此接口有两个方法
a、GetCallbackResult 此方法返回处理结果给客户端,请求完成后自动调用
b、RaiseCallbackEvent此方法是从客户端获取数据 由参数eventArgument 接收,并进行相关处理得出结果
2、注册回调和主调脚本
a、注册回调函数 string reference = Page.ClientScript.GetCallbackEventReference(this, "arg", "SendData", "context");
注册一个对于回调函数的引用,用于获取返回结果,并进行业务逻辑处理,注册的函数名和客户端书写的函数名需相同才能引用
b、注册主调函数,主调函数,像服务器发送请求 string regCallbakeScript = "function CallServer(arg,context){" + reference + "}";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "CallServer", regCallbakeScript, true);
c、客户端脚本:一个回调函数fucntion SendData(arg,context){alert(arg);}
直接调用CallServer函数发送请求
1、处理页面需实现ICallbackEventHandler接口,此接口有两个方法
a、GetCallbackResult 此方法返回处理结果给客户端,请求完成后自动调用
b、RaiseCallbackEvent此方法是从客户端获取数据 由参数eventArgument 接收,并进行相关处理得出结果
2、注册回调和主调脚本
a、注册回调函数 string reference = Page.ClientScript.GetCallbackEventReference(this, "arg", "SendData", "context");
注册一个对于回调函数的引用,用于获取返回结果,并进行业务逻辑处理,注册的函数名和客户端书写的函数名需相同才能引用
b、注册主调函数,主调函数,像服务器发送请求 string regCallbakeScript = "function CallServer(arg,context){" + reference + "}";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "CallServer", regCallbakeScript, true);
c、客户端脚本:一个回调函数fucntion SendData(arg,context){alert(arg);}
直接调用CallServer函数发送请求
服务端代码
/// <summary> /// 实现ICallbackEventHandler接口,完成Ajax更快的功能 /// </summary> public partial class _Default : System.Web.UI.Page,ICallbackEventHandler { private string returnValue = string.Empty; protected void Page_Load(object sender, EventArgs e) { //注册回调脚本、具体实现自己写,此脚本中接收返回结果 string reference = Page.ClientScript.GetCallbackEventReference(this, "arg", "SendData", "context"); //注册处理脚本 string regCallbakeScript = "function CallServer(arg,context){" + reference + "}"; Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "CallServer", regCallbakeScript, true); } #region ICallbackEventHandler 成员 /// <summary> /// 返回结果 /// </summary> /// <returns></returns> public string GetCallbackResult() { if (string.IsNullOrEmpty(returnValue)) return (returnValue = "-1"); return returnValue; } /// <summary> /// 触发RaiseCallbackEvent事件获取客户端数据,然后进行处理 /// </summary> /// <param name="eventArgument"></param> public void RaiseCallbackEvent(string eventArgument) { returnValue = eventArgument; } #endregion }
客户端脚本代码:
<script type="text/javascript"> //接收回调结果,此函数在处理服务器完成后自动回调,即为回调函数,相当Ajax中的回调函数 function SendData(arg) { alert(arg); } //客户端逻辑函数 function GetReturnValue() { var arg = "Hello CallbackEventHandler!"; //调用页面加载完成后注册的脚本,传递参数'arg'由服务器进行处理,第二个参数'context'不用传递 CallServer(arg,""); } </script> <input type="button" value="CallbackMe" id="btn" onclick="GetReturnValue()" />
相关文章推荐
- Asp.Net2.0页面通过ICallbackEventHandler接口实现Ajax
- 利用ICallbackEventHandler接口实现Ajax效果
- >使用 ICallbackEventHandler 接口 实现 AJAX 功能
- 利用ICallbackEventHandler接口实现异步调用
- 【CI学习笔记】利用jquery中的ajax,调用接口,实现登录
- 利用ICallbackEventHandler接口实现异步调用
- 使用jquery+ajax实现页面访问后台接口
- 利用 ICallbackEventHandler接口 实现客户端回调
- [转]自定义ASP.NET AJAX拖放功能示例程序:实现IDragSource和IDropTarget接口将商品拖放至购物车中
- AJAX调用接口实现静态页面局部动态化的简单例子
- 实现了IPostBackEventHandler接口的TextBox
- Thinkphp5的ajax接口实现
- jquery中用$.ajax实现注册(html、jquery、php、接口文档)、ajax验证用户提交数据
- ICallbackEventHandler接口实现多级联动
- ICallbackEventHandler接口实现局部刷新实例
- 在 ASP.NET 网页中不经过回发而实现客户端回调(需要实现ICallbackEventHandler接口)
- Ajax实现的bing 翻译接口 像词典一样
- c#通过ICallbackEventHandler接口实现回调
- 利用ICallbackEventHandler接口实现无刷新的方法(2)
- 自定义ASP.NET AJAX拖放功能示例程序:实现IDragSource和IDropTarget接口将商品拖放至购物车中