使用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函数发送请求

/// <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()" />

使用ICallbackEventHandler接口更高效实现Ajax的更多相关文章

  1. 使jQuqer更高效的方法

    讨论 jQuery 和 javascript 性能的文章并不罕见.然而,本文我计划总结一些速度方面的技巧和我本人的一些建议,来提升你的 jQuery 和 javascript 代码.好的代码会带来速度 ...

  2. ICallbackEventHandler 接口实现回调处理功能

    在最近的项目实现中遇到了一个问题 在数据处理的过程中,需要请求获取数据,再做处理之后,可以在页面及时获取数据 开始时,首先想到的到是写Ajax请求,但在做后续数据处理后,处理获取数据等操作,感觉实现起 ...

  3. 采用ADM2483磁隔离器让RS485接口更简单更安全

    采用ADM2483磁隔离器让RS485接口更简单更安全 摘要:本文介绍RS485的特点及应用,指出了普通RS485接口易损坏的问题,针对存在的问题介绍了以ADM2483为核心的磁隔离解决方案. 关键词 ...

  4. 阿里面试:MySQL如何设计索引更高效?

    有情怀,有干货,微信搜索[三太子敖丙]关注这个不一样的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文章. ...

  5. HarmonyOS新能力让数据多端协同更便捷,数据跨端迁移更高效!

    作者:yijian,终端OS分布式文件系统专家:gongashi,终端OS分布式数据管理专家 HarmonyOS作为分布式操作系统,其分布式数据管理能力非常重要.我们也一直围绕持续为开发者带来全局&q ...

  6. K8s 如何提供更高效稳定的编排能力?K8s Watch 实现机制浅析

    关于我们 更多关于云原生的案例和知识,可关注同名[腾讯云原生]公众号~ 福利: ①公众号后台回复[手册],可获得<腾讯云原生路线图手册>&<腾讯云原生最佳实践>~ ②公 ...

  7. 如何更高效地定制你的bootstrap

    bootstrap已经作为前端开发必不可少的框架之一,应用bootstrap使得我们对布局.样式的设定变得非常简单.但bootstrap提供的默认样式往往不能满足我们的需求,从而定制化bootstra ...

  8. documnent.getElementbyId(‘myId’)和$(‘#myId’)哪种更高效?

    第一种更高效,直接调用javascript引擎.

  9. 为什么说Parcelable 比Serializable更高效

    本文转载自:http://blog.csdn.net/androidzhaoxiaogang/article/details/8172539 什么是序列化,实现序列化的目的是什么? 讨论这个问题之前, ...

随机推荐

  1. 《Linux内核分析》 week6作业-Linux内核fork()系统调用的创建过程

    一.进程控制块PCB-stack_struct 进程在操作系统中都有一个结构,用于表示这个进程.这就是进程控制块(PCB),在Linux中具体实现是task_struct数据结构,它主要记录了以下信息 ...

  2. iOS开源 框架

    UI界面类项目: Panoramagl ——720全景展示 Panorama viewer library foriPhone, iPad and iPod touch MBProgressHUD — ...

  3. Oracle数据库之PL/SQL程序设计基础

    PL/SQL程序设计基础 一.PL/SQL块结构 前边我们已经介绍了PL/SQL块的结构,再来回顾一下: DECLARE /* * 声明部分——定义常量.变量.复杂数据类型.游标.用户自定义异常 */ ...

  4. SQL Server 触发器(转)

    触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删 ...

  5. 使用 HTTP 缓存机制提升系统性能

    摘要 HTTP缓存机制定义在HTTP协议标准中,被现代浏览器广泛支持,同时也是一个用于提升基于Web的系统性能的广泛使用的工具.本文讨论如何使用HTTP缓存机制提升基于Web的系统,以及如何避免误用. ...

  6. innerHTML在IE中报错

      问题:开发过程中,用到循环往table里面插入tr标签,然后tr里又循环插入td,在其它浏览器都没问题,但是在IE9及以下版本中都报错:   google上得到答案:由于我之前不知道错误的原因,在 ...

  7. nginx虚拟配置

    server { listen 8080; server_name www.manihome.com ; root "D:/WWW/mnmnh_2015"; location / ...

  8. CentOS 6.3安装配置LAMP服务器(Apache+PHP5+MySQL)

    准备篇: 1.配置防火墙,开启80端口.3306端口 vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp -- ...

  9. C#执行javascript代码

    最近在做网站自动登陆小工具,遇到技术屏障.密码在submit时会使用js进行加密.这时我需要模拟这个加密过程,想到使用C#执行javascript代码. 对于执行javascript代码,纯代码方式使 ...

  10. VS2013编译libcurl

    首先从这里下载libcurl的package: http://curl.haxx.se/libcurl/ 然后解压,里面有个winbuild文件夹,这里是为windows构建工程的文件夹.里面有nma ...