这个是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 回调实用讲解 [原创]的更多相关文章

  1. JavaScript Callback 回调函数

    JavaScript callback回调函数 你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货.在这 ...

  2. v-if和v-show的区别以及callback回调函数的体会

    今天总结一下最近一周碰到的一些问题 一.v-if和v-show的区别 v-show用的是css属性中的display="block/none",元素被隐藏了但是节点还在页面中,但是 ...

  3. js中promise解决callback回调地狱以及使用async+await异步处理的方法

    1.callback回调地狱 function ajax(fn) { setTimeout(()=> { console.log('你好') fn() }, 1000) } ajax(() =& ...

  4. 关于js的callback回调函数的理解

    回调函数的处理逻辑理解:所谓的回调函数处理逻辑,其实就是先将回调函数的代码 冻结(或者理解为闲置),接着将这个回调函数的代码放到回调函数管理器的队列里面. 待回调函数被触发调用的时候,对应的回调函数的 ...

  5. callback回调函数的理解

    callback采用的设计模式是:模板模式,他的设计理念是基于面向对象中的多态的. 我们的程序中走到某个地方他会出现不一样的动作的时候,我们在这儿就使用回调函数.我们利用的就是 多态的原理,我们传递不 ...

  6. callback 回调函数

    把函数a当做一个参数传入函数b <script> Array.prototype.mysort = function(callback){ let s = this; //准备向回调函数里 ...

  7. callback回调函数-python

    链接:http://www.zhihu.com/question/19801131/answer/27459821来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 编程分 ...

  8. callback回调函数【转】

    请给作者点赞--> 原文链接 什么是回调函数? 我们绕点远路来回答这个问题. 编程分为两类:系统编程(system programming)和应用编程(application programmi ...

  9. callback回调函数理解 相当于this指针

    1.callback函数在微软的官方手册中是这样定义callback函数的:“callback函数是由应用程序定义而由操作系统调用的函数”.   凡是由用户设计而却由windows系统调用的函数,统称 ...

随机推荐

  1. web.xml配置详解之欢迎页面和错误页面

    <!-- 应用的欢迎页面  采用list的方式罗列欢迎页面, 系统会从第一个找到最后一个,找到了文件就不继续往下找了.优先显示前边的. --> <welcome-file-list& ...

  2. Apache虚拟主机(vhost)配置教程

    使用apache来配置虚拟主机,在单一系统上运行多个网站. 现在很多linux主机使用apache作为web服务器的,大部分是基于这个原理来配置虚拟主机的. 下面就windows下以apache 2. ...

  3. MsoShapeType /InlineShape枚举

    指定形状的类型或形状范围. 名称 值 说明 msoAutoShape 1 自选图形. msoCallout 2 标注. msoCanvas 20 画布. msoChart 3 图. msoCommen ...

  4. BrnShop开源网上商城第四讲:自定义插件

    重要通知:BrnShop企业版NOSQL设计(基于Redis)已经开源!源码内置于最新版的BrnShop中,感兴趣的园友可以去下载来看看.官网地址:www.brnshop.com. 好了现在进入今天的 ...

  5. POJ -- 3842

    An Industrial Spy   Description Industrial spying is very common for modern research labs. I am such ...

  6. 【原】Spark中Job的提交源码解读

    版权声明:本文为原创文章,未经允许不得转载. Spark程序程序job的运行是通过actions算子触发的,每一个action算子其实是一个runJob方法的运行,详见文章 SparkContex源码 ...

  7. 删除旧Ambari集群

    年少无知,安装了1.2.0版本.开源社区动力太强,更新的吼吼的跟不上啊,升级发生错误,于是就想重装了.在网上找到了一个很好的删除脚本,分享一下.原文链接 http://www.cnblogs.com/ ...

  8. Linux 下的五种 IO 模型

    概念说明 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方).操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的 ...

  9. Linux文件误删除恢复操作

    作为一个多用户.多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的.尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是 其他用户和一些有写盘动作的进程会很快覆盖这些数据.不过 ...

  10. .Net设计模式_开篇

    前言 其实以前看过两次设计模式,现在想来,几乎已经对设计模式没有任何印象,说明根本没有理解.或者说几乎不用,所以我除了单列.工厂外的设计模式几乎全部忘记了.最近需要写一个引擎,想用UML设计整体的架构 ...