环境:window xp sp2 + .net framwwork 2.0.50727。
asp.net 2.0自带的客户端回调
asp.net 2.0已经发布。2.0有了许多新特性,客户端回调就是其中之一。客户端回调允许我们不经过回发而调用服务器端的方法,与ajax提供的功能是一致的,但是不如ajax灵活,ajax可以自定义调用的方法,2.0自带的回调功能却不行。要使用客户端回调功能必须实现system.web.ui.icallbackeventhandler接口。
这个接口包含两个方法:
| //客户端回调时固定调用此方法 public void raisecallbackevent(string eventargument) //执行完raisecallbackevent后将调用此方法。此方法的返回值将被发回客户端 public string getcallbackresult() |
例一:
|
.cs: this,"arg", "receiveserverdata", "context"); this.gettype(),"callserver", callbackscript, true); |
ajax介绍
ajax并不是一种新的技术,而是一些已有技术的有机结合,主要包括:xmlhttp、reflect。一个ajax框架基本上包括:一个自定义的httphandler、一段javascript代码。
ajax运行机制
以前我们使用xmlhttp实现无刷新页面的时候,是用xmlhttp来请求一个隐藏的页面,使用(asp/asp.net)自带的httphandler,而在ajax中,我们请求的也是一个隐藏的页面,不同的是这个页面的httphandler是由我们自己来实现。
|
type="czhenq.httphandlerfactory, czhenq.ajax"/> |
2.添加一个web页面,将刚才的脚本拷贝到页面中,并添加一个你要调用的方法。
| private string add(int i, int j) { return textbox1.text; } |
3.在页面中放置一个hiddenfield控件,命名为assemblyname。 并在page_load中添加如下代码:
|
string assemblyname = czhenq.ajax.class1.encode( typeof(_default).assemblyqualifiedname); |
4.页面中添加如下脚本:
| var assemblyname = document.getelementbyid("assemblyname"); var argus = new array(); argus.push("100"); argus.push("200"); callmethod(assemblyname,"add",argus); |
总结 ajax并不是一种新的技术,它只是一些已有技术的有机结合,我们可以将ajax简单的理解为:ajax是对javascript调用xmlhttp的封装,它改变的是代码书写方式。
附 encode 与 dencode实现:
| public static string encode(string value) { byte[] bytes = asciiencoding.ascii.getbytes(value); return convert.tobase64string(bytes); } public static string dencode(string value) { byte[] bytes = convert.frombase64string(value); return asciiencoding.ascii.getstring(bytes); } |
(