六步使用ICallbackEventHandler实现无刷新回调

ICallbackEventHandler存在于System.Web.UI中,我们先做一个非常简单的例子来试用一下。

   第一步,在VS2005中建立一个新的WEB窗件。
   第二步,在ASPX中,放上一段HTML代码(如下):

1<body>
2    <form id="form1" runat="server">
3    <div>
4        <button onclick="CallServer()">CallServer</button>
5    </div>
6    </form>
7</body>


   第三步,然后在<HEAD></HEAD>中放入一段JavaScript脚本:

1 <script type="text/javascript">
2     function CallServer()
3     {
4         var product = "测试";
5         <%= ClientScript.GetCallbackEventReference(this, "product", "ReceiveServerData",null)%>;
6      }
7     
8     function ReceiveServerData(rValue)
9     {
10          alert(rValue);
11      }
12</script>

   第四步,在此ASPX的后台CS代码中,继承ICallbackEventHandler接口,并实现接口中的两个方法:
ICallbackEventHandler.GetCallbackResult()
    和
ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)

   第五步,增加一个变量CallBackValue,并修改接口的两个方法为:

1 private string CallBackValue = string.Empty;
2    
3string ICallbackEventHandler.GetCallbackResult()
4{
5  return CallBackValue + ",ok";
6 }
7
8void ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)
9{
10  this.CallBackValue = eventArgument;
11 }
12

    第六步,运行,界面上会出现一个按钮,点击后,会将“测试”这个字符串传至后台,后台C#代码将字符串加上“,OK”后返回给客户端的JavaScript代码,并显示。

    以上六步,就可以实现无刷新回调了。现在,我们来分析一下几段代码。
    先看第三步中的JavaScript代码,其中的CallServer()方法中进行了回调,回调的语句为:
<%= ClientScript.GetCallbackEventReference(this, "product", "ReceiveServerData",null)%>;
   
    里面四个参数中第二个参数指定将product这个JavaScript中的字符串变量传回后台,第三个参数指定了从后台返回时接收返回信息的JavaScript方法ReceiveServerData(string Value)。

    第五步中后台的两个方法,一个ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)用来接收前台JavaScript中传来的字符串变量,并赋值给内部变量this.CallBackValue,另一个方法ICallbackEventHandler.GetCallbackResult()将变更后的内部变量this.CallBackValue返回给前台JavaScript方法ReceiveServerData(string Value)。

    调用的顺序是: (前台)CallServer() --> (后台)ICallbackEventHandler.RaiseCallbackEvent(string eventArgument) --> (后台)ICallbackEventHandler.GetCallbackResult() --> (前台)ReceiveServerData(string Value)。

    整个调用过程非常简单,而其中非常关键的一步是第三步的
<%= ClientScript.GetCallbackEventReference(this, "product", "ReceiveServerData",null)%>;
这个方法,以下是从网上找来的一段资料,大家可以看看。

GetCallbackEventReference使得客户端方法在客户端请求结束时得到回收。 它也让CallBackManager 确定产生哪种回叫方法。 在这个例子内使用的被重载的方法是:

   public string GetCallbackEventReference(
      string target, string argument,
      string clientCallback, string context,
string clientErrorCallback)
Table 1. GetCallBackEventReference 方法的参数描述。
Parameters Description target ID of the page where the callback invocation is handled. For more see the other overloaded options available in the next immediate section.In our sample "this" is the argument value, since the callback is handled in the same page. argument This is the parameter defintion used to send value to the server. This value is received by parameter "eventArgument" at the server end using the RaiseCallbackEvent event."arg" becomes the first parameter name in our sample. The value is passed through this argument from the client. clientCallback Method name of the callback that is invoked after successful server call."CallBackHandler" is the method name that handles the callback.   context A parameter that is associated with the "argument" from the client. It usually should be used to identify the context of the call. You will understand this better from the sample implementation.In the sample "ctx" is just another parameter definition used. The value for this is passed from the client. clientErrorCallback Name of the method that is called from the CallBackManager in case of any errors.
从这个方法返回的string是:

  
   __doCallback('__Page',arg,CallBackHandler,ctx, ErrorCallBack)

另一个重载方法是:

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

转载于:https://www.cnblogs.com/n666/archive/2009/09/11/2191139.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/411302.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hexo 环境变量_小白使用 Github + Hexo 从 0 搭建一个博客

最近有几位同学在公众号后台留言问我的博客站是怎么建站的&#xff0c;思来想去&#xff0c;还是写一篇从 0 开始吧。前置准备我们先聊一下前置准备&#xff0c;可能很多同学一听说要自己搭一个博客系统&#xff0c;直接就望而却步。不得有台服务器么&#xff0c;不得搞个数据库…

[html] 说说js代码写到html里还是单独写到js文件里哪个好?为什么?

[html] 说说js代码写到html里还是单独写到js文件里哪个好&#xff1f;为什么&#xff1f; js和html还是分开比较好&#xff0c;一是各功能独立&#xff0c;界面比较干净&#xff0c;二是方便管理&#xff0c;关系清晰&#xff0c;三是方便引用&#xff0c;一些公共js独立导入可…

android service交互,Android Activity与Service的交互方式

参考: http://blog.csdn.net/gebitan505/article/details/18151203实现更新下载进度的功能1. 通过广播交互Server端将目前的下载进度&#xff0c;通过广播的方式发送出来&#xff0c;Client端注册此广播的监听器&#xff0c;当获取到该广播后&#xff0c;将广播中当前的下载进度…

[转帖]AjaxControlToolkit.TabContainer 自定义样式续

Tabs控件其实是一个容器控件TabContainer和面板控件TabPanel。TabContainer控件用于包含TabPanel。TabPanel控件用于显示。下面来看一个示例&#xff1a;1)在VS2005中新建一个ASP.NET AJAX-Enabled Web Project项目工程&#xff0c;命名为Tabs。2)在Default.aspx页面上添加一个…

NodeMailer

刚开始学习MEAN, 搞个插件发个邮件。 NodeMailer貌似出镜率很高&#xff0c;用用。 https://nodemailer.com/smtp/ 先申请了个个人的Outlook的邮箱&#xff0c;测试了一把&#xff0c;顺利通过。耶&#xff0c;好激动。 const nodeMailer require(nodemailer);let transporte…

[html] 写一个布局,它的宽度是不固定的100%,如果让它的宽度始终是高度的一半呢?

[html] 写一个布局&#xff0c;它的宽度是不固定的100%&#xff0c;如果让它的宽度始终是高度的一半呢&#xff1f; <div class"ratio" style"--ratio: 0.5;"></div>.ratio {background-color: salmon;position: relative; }.ratio::before {…

c++ using 前置声明_每日优鲜前置仓模式的配货优化方案案例介绍

大渔导读&#xff1a;2019 年零售业供应链最佳实践大奖——银奖 基于每日优鲜前置仓模式的配货优化方案案例&#xff1b;1. 背景介绍&#xff1a; 每日优鲜成立于 2014 年 11 月&#xff0c;是专注于优质生鲜的移动电商&#xff0c;已在北上广深等全国 10 个核心城市建立“城市…

lg gw880 qq2011 android beta4版,LG GW880评测:CMMB天线、细节设计

机身侧面的银色边框与黑色的正面形成了鲜明的对比。不同于大部分的手机&#xff0c;LG GW880把电源/锁机键放到了机身左侧&#xff0c;而且还多了一个返回键&#xff0c;所以机身侧面设置了比较多的按键&#xff0c;设计比较复杂。机身右侧是拍照键、音量键以及数据线接口&…

数据库的事务,隔离级别和3大范式

*数据库事务的想关操作 1.事务开始:开始是一个事物,作为回滚的标记 2,回滚 rollback :回滚到上一个事务开始的地方, 或者回滚到某个存档点,期间没被 commit ; 操作都会被撤回 3.提交commit ;将事务中所有操作提交到数据库中 4.存档点:设置存档点方便回滚 *开始事务 ........确认…

IE6/IE7/Firefox浏览器不兼容原因及解决办法

浏览器的不兼容&#xff0c;大家肯定都是深恶痛绝的&#xff0c;往往我们只是去做修补&#xff0c;却忘了更重要的事情&#xff0c;那就是追溯根源&#xff0c;避免类似的不兼容再次出现。在下不才&#xff0c;归纳几点html编码要素&#xff0c;望能指点各位&#xff1a; 1.文字…

[html] 如果要开发一个在超级大屏上显示的可视化页面,你首先要考虑什么?

[html] 如果要开发一个在超级大屏上显示的可视化页面&#xff0c;你首先要考虑什么&#xff1f; 适配 清晰度个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

excel按季度分类汇总_Excel数据分析实战(1)--电商销售记录分析

Excel是市面上最流行的办公软件之一&#xff0c;也是数据分析师入门最好的学习工具。因为其功能强大、操作简单&#xff0c;可以快速对数据进行清洗&#xff0c;建模&#xff0c;可视化&#xff0c;操作者不需要其他计算机基础也能快速上手。所以选择Excel进行数据分析入门的项…

android 跳转页面出错,Android 页面跳转(无/含有返回结果)

一.两个页面的xml文件factivityandroid:layout_width"match_parent"android:layout_height"wrap_content"android:text"直接跳转" />android:layout_width"match_parent"android:layout_height"wrap_content"android:tex…

[Silverlight]奇技银巧系列-2

Silverlight奇技银巧系列&#xff1a; 所有该系列中的文章只为介绍一些Silverlight中或隐藏在Silverlight .NET framework鲜为人知的知识和技巧。这些文章并非教程&#xff0c;也是不是什么技术指导&#xff0c;您只需对文章介绍的内容保有印象。这些知识和技巧也许会在不经意间…

[html] 如何解决微信浏览器视频点击自动全屏的问题?

[html] 如何解决微信浏览器视频点击自动全屏的问题&#xff1f; 1.1 页面内播放 X5内核视频在用户点击后默认会进入全屏播放&#xff0c;前端可以设置video的x5-playsinline属性来将视频限定于网页内部播放&#xff0c;这个默认还是使用的X5内核视频播放控件&#xff0c;层级高…

好程序员Java分享Java案例_英汉字典

在写代码的时候&#xff0c;当鼠标悬浮在某一个单词上面的时候&#xff0c;有道词典点有时会弹出一个消息气泡&#xff0c;在里面中给出关于这个单词相关的解释&#xff0c;下面给大家展示一个使用Java基础语言编写的英汉字典案例&#xff1a;   实现功能&#xff1a; …

同事更新几个表_最近计划学习的几个网站资源

在没有明确需要的时候逛知乎&#xff0c;B站什么的随便看教程&#xff0c;发现资源很多&#xff0c;五花八门&#xff0c;但是总也没系统地学习一下。一会儿看一小段&#xff0c;转眼就忘光了&#xff0c;只留下一个刚才我没有在玩耍的错觉。以上是无关紧要的忏悔。接下来主要记…

[html] H5播放的video视频,如何实现对视频截图?

[html] H5播放的video视频&#xff0c;如何实现对视频截图&#xff1f; <video controls src"./assets/demo.mp4" width"400" height"300" id"video">Sorry, your browser doesnt support embedded videos.</video><bu…

带有托管代码的InfoPath2007表单模版发布到SharePoint表单库(浏览器方式查看)

在本篇文章中,将与大家分享如何将一个带有托管代码(manage code)的InfoPath2007表单模版发布到SharePoint Server2007的表单库中&#xff0c;并使得最终用户可以通过浏览器方式访问。 1. 创建InfoPath表单模版 在这里&#xff0c;我们使用VSTO2005与InfoPath2007。生成…

cefsharp System.IO.FileNotFoundException: 未能加载文件或程序集“CefSharp.Core.dll”或它的某一个依赖项。...

解决办法 安装vc 2015 Redistributable 64位系统安装x64 如果还报错先装x64版本再装x86版本 https://files.cnblogs.com/files/xuejianxiyang/vc_redist.part1.rarhttps://files.cnblogs.com/files/xuejianxiyang/vc_redist.part2.rarhttps://files.cnblogs.com/files/xuejianx…