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

 ajax技术所提倡的无刷新回调,在原来的技术中需要写大量的javascript代码或使用一些ajax框架,使得开发效率和可维护性大大降低。其实asp.net2.0中,已经提供了这样的接口,这就是icallbackeventhandler。
    关于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    
 3 string icallbackeventhandler.getcallbackresult()
 4 {
 5  return callbackvalue + ",ok";
 6 }
 7
 8 void 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)%>;

你可能感兴趣的:(JavaScript,String,function,null,asp.net,ajax框架)