上篇写道怎样用ASP.NET来实现页面的局部刷新,现在来说说它的实现机制。看下面的代码:

1 protected void Page_Load(object sender, EventArgs e)
2     {
3         txtTime.Value = DateTime.Now.ToString();
4 
5         string callBackRef 
6             = ClientScript.GetCallbackEventReference(thisstring.Empty, "getTime"string.Empty);
7         btnGetTime.Attributes["onclick"= callBackRef;
8     }

      在page_load事件中,我们给按钮btnGetTime的onclick属性(事件)赋值。这个值是通过ClientScript获得的客户端CallBack函数引用。再看客户端生成的情况:

1 <div>
2         <input name="txtTime" type="text" id="txtTime" readonly="readonly" value="2006-12-20 21:25:53" />
3         <input name="btnGetTime" type="button" id="btnGetTime" value="Get" 
4                onclick="WebForm_DoCallback('__Page',&quot;&quot;,getTime,&quot;&quot;,null,false)" />
5     </div>

      我们可以看到按钮btnGetTime的onclick事件将会调用WebForm_DoCallback函数。之所以把这篇文章放到AJAX分类中来就是因为这个函数了,现在看看这个函数是如何实现的:

  1利用ASP.NET实现无刷新更新页面 (2)var __pendingCallbacks = new Array();
  2利用ASP.NET实现无刷新更新页面 (2)var __synchronousCallBackIndex = -1;
  3}


      这个代码着实有些长了,但是仔细观察4--44行,有些AJAX基础的人马上就能识别出这是使用XmlHttpRequest进行发送请求的,callback函数也设置为我们在page_load函数中设置为getTime。当服务器完成响应后,会回调getTime函数,将服务器返回的时间字符串设置到文本框中。
      本文提供了一个非常简单的ASP.NET无刷新页面的实现,利用了ASP.NET原本就有的函数,这也进一步说明AJAX不是一个新的东西。本文提供的方法当然可以扩展到更广泛的应用中,利用服务器返回的字符串(可以是普通的字符串,当然也可以为作用更大的xml和html片断)动态的改变页面的局部区域。

相关文章: