C# Callback 回调实用讲解 [原创]
这个是2011年写的一个技术贴,现在看可能有点过时了,有兴趣的朋友也可以看一下。
一. 描述
在开发winform程序时不会考虑页面刷新问题,只要控制好线程别导致假死就ok了,但是在开发web页面程序时,刷新有的时候真是头痛的很。页面回调可以解决这个问题,下面简单就实用来讲对callback做下介绍。
二. 讲解
在网上看了很多关于原理呀什么的讲解,起初也是一头雾水,如果只是使用,不用了解那么多,那些原理在开发web网络功能时可以多了解一下,相关知识可以到网上搜一下,在这里我就简单说一下如何使用。
其实你只要走完5步就完成了,很简单:
1.设置触发事件,例如:
<div onclick="fun_callbk('大家好我是王东银)">click me</div>
2.编写两个客户端函数,例如:
...
function fun_callbk(msg)//这个函数就是你点击事件要触发的方法,其中就写一句话
{
<%=this.ClientScript.GetCallbackEventReference(this,"msg","showMsg",null)%>
//这句话简单讲就是在客户端注册一个引用,其中的参数你可以到网上搜一下,一般使用4个参数就够了
//第一个参数:指的是page类
//第二个参数:事件触发方法的参数
//第三个参数:接收服务端返回数据的函数,下面会定义
//第四个参数:一般设为null就可以了
}
function showMsg(rValue)//这个就是上面的第三个参数,接受服务端返回的值
{
alert(rValue);//简单点写,弄的那么复杂大家就看迷糊了
}
3.编写服务端程序
这一步比较简单了,你必须要做的三件事:
a.引用一个接口:ICallbackEventHandler,这是必须的,和前面的类或接口以,隔开(这是c#基础了)
b.声明第一个函数,用于接收客户端传来的值,如下:
//记住:函数名字不可以随便,必须是RaiseCallbackEvent才可以
//首先声明一个变量,方便讲解
string myStr=string.Empty;
public void RaiseCallbackEvent(string arg)
{
myStr=arg+"hello";//还是简单的写,将客户端传来的值赋给咱新声明的变量
//加一个hello,是为了验证数据的确是有服务端处理后返回的
}
c.声明另一个函数,用于将结果返回客户端
//这个函数的名字也必须是GetCallbackResult,不可以修改
public string GetCallbackResult() { return myStr;//将结果返回客户端 }
好了,到这里你基本已经完成了!
三. 做一下总结
其实就用到4个方法,fun_callbk(),showMsg(),GetCallbackResult(),RaiseCallbackEvent()
需要添加一个引用:<%=this.ClientScript.GetCallbackEventReference(this,"arg,"showMsg",null)%>
需要继承一个接口:ICallbackEventHandler
就这些,你可以简单的这样理解:
fun_callbk()将客户端的值传给服务端的RaiseCallbackEvent();服务端处理完后通过GetCallbackResult()将值又返回客户端的showMsg(),就OK了
C# Callback 回调实用讲解 [原创]的更多相关文章
- JavaScript Callback 回调函数
JavaScript callback回调函数 你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货.在这 ...
- v-if和v-show的区别以及callback回调函数的体会
今天总结一下最近一周碰到的一些问题 一.v-if和v-show的区别 v-show用的是css属性中的display="block/none",元素被隐藏了但是节点还在页面中,但是 ...
- js中promise解决callback回调地狱以及使用async+await异步处理的方法
1.callback回调地狱 function ajax(fn) { setTimeout(()=> { console.log('你好') fn() }, 1000) } ajax(() =& ...
- 关于js的callback回调函数的理解
回调函数的处理逻辑理解:所谓的回调函数处理逻辑,其实就是先将回调函数的代码 冻结(或者理解为闲置),接着将这个回调函数的代码放到回调函数管理器的队列里面. 待回调函数被触发调用的时候,对应的回调函数的 ...
- callback回调函数的理解
callback采用的设计模式是:模板模式,他的设计理念是基于面向对象中的多态的. 我们的程序中走到某个地方他会出现不一样的动作的时候,我们在这儿就使用回调函数.我们利用的就是 多态的原理,我们传递不 ...
- callback 回调函数
把函数a当做一个参数传入函数b <script> Array.prototype.mysort = function(callback){ let s = this; //准备向回调函数里 ...
- callback回调函数-python
链接:http://www.zhihu.com/question/19801131/answer/27459821来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 编程分 ...
- callback回调函数【转】
请给作者点赞--> 原文链接 什么是回调函数? 我们绕点远路来回答这个问题. 编程分为两类:系统编程(system programming)和应用编程(application programmi ...
- callback回调函数理解 相当于this指针
1.callback函数在微软的官方手册中是这样定义callback函数的:“callback函数是由应用程序定义而由操作系统调用的函数”. 凡是由用户设计而却由windows系统调用的函数,统称 ...
随机推荐
- MVC 自定义AuthorizeAttribute实现权限管理
在上一节中提到可以使用AuthorizeAttribute进行权限管理: [Authorize] public ActionResult TestAuthorize() { return View() ...
- C#索引器的作用及使用
1. 作用: 可以使得类和实例能够像数组那样使用一样,又称为带参属性 2. 区分 (1)索引器与数组的比较: 索引器的索引值不受类型限制.用来访问数组的索引值一定是整数,而索引器可以是其他类型的索引值 ...
- [codevs4247]奇特的生物
题目描述 Description 科学家们最近发现了一种奇怪的生物,它们每天长大一岁,刚出生的宝宝为1岁,且它们的年龄没有上限.已知年龄为1岁,2岁,3岁,……,k岁的个体具有生育能力,当年龄为i的具 ...
- 个性CMD设置方法(转载)
原文地址http://wenku.baidu.com/link?url=DB8X-eHwE_VGtggBmKsBimdzXeGI_6Ga90W9PmX2Px2eUqdXOnq7FhEIzsqBfTqT ...
- oracle 分区和分区索引
一.个人理解:建表时一般都会指定在一个表空间上,但是可能随着表空间扩大,查询越来越慢,分区表就是将一个表实际存在不同的表空间,oracle存储分为块,断,表空间.新建一个表,会给表分配指定大小的段,段 ...
- (转载)Excel文档保存的时候,提示“文档未保存”
亲测,成功搞定 Excel文档保存的时候,提示“文档未保存”? 先打开你需要处理的excel,然后打开工具栏--宏--录制新宏--确定--停止录制宏--宏-宏--编辑--复制以下程序Sub 恢复保存( ...
- HW5.18
public class Solution { public static void main(String[] args) { System.out.printf("%s\t%s\n&qu ...
- UVa1328 - Period(KMP找最短循环节)
题目大意 给定一个长度为n的字符串,求它的每个前缀的最短循环节 题解 白书例题~~~ "错位部分"长度为i-f[i], 如果这个前i个字符能够组成一个周期串,那么"错位& ...
- windows 7 中将“我的电脑”锁定到任务栏
1.在桌面右击->新建->快捷方式 2.输入%SystemRoot%\explorer.exe /E,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}点击下 ...
- HTTP的升级产品:SPDY
一.什么是SPDY? SPDY是Google开发的基于传输控制协议(TCP)的应用层协议 .目前已经被用于Google Chrome浏览器中来访问Google的SSL加密服务.SPDY当前并不是一个标 ...