.NET 2.0正式版中无刷新页面的开发

刷新|无刷新|页面

  在已经发布的 ASP.NET2.0 中,无刷新页面开发相关部分同 beta2 有不少改动。而且在越来越多的 Ajax 开发包被开发出来的情况下, ASP.NET2.0 自带的无刷新页面技术没有被很多人了解,甚至不少人认为该功能有些“鸡肋”。但如果我们仅仅是在程序中加入很少部分的 Ajax 特性, Atlas 、 Ajax.Net 等就显得有些“杀鸡用牛刀”的感觉了。而且,我认为使用 ASP.NET2.0 提供的方法进行开发并不很复杂,相反,使用很少的代码就可以做出来很棒的效果!

  下面我来一步一步的带大家开发无刷新的页面!

  第一步:实现 ICallbackEventHandler 接口

  ICallbackEventHandler接口位于System.Web.UI命名空间下。在beta2时,ICallbackEventHandler只包含一个RaiseCallbackEvent方法,即处理回调事件,又返回处理结果。在正式版中,它变成了包含GetCallbackResult和RaiseCallbackEvent两个成员方法,第一个用来返回回调事件的结果,第二个用来出来回调事件。这个变化主要是为了编写Web控件而做的改动,具体可以看一下GridView等控件中的实现代码。

  建立一个 Web 网站,我们来修改 default.aspx.cs 文件:

  1 public partial class _Default : System.Web.UI.Page, ICallbackEventHandler
  1 private string str;
  2 public void RaiseCallbackEvent(string eventArgument)
  3 {
  4 //可以根据传递的参数不同,调用不同的处理逻辑
  5 str = "从服务器端返回的内容:" + eventArgument;
  6 }
  7
  8 public string GetCallbackResult()
  9 {
  10 return str;
  11 }
  12

  第二步:注册回调方法

  我们在 default.aspx 页面中添加一个 TextBox ,一个 Label 和一个 Html 控件 Button ,并给 Button 添加 onclick 事件:

1 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
2 <input id="Button1" type="button" value="提交到Label1" /><br/> 
3 <asp:Label ID="Label1" runat="server" Text="Label1:"></asp:Label> 

 1     <script type="text/javascript">  
 2        //由button调用 
 3        function CallServer(inputcontrol, context) 
 4        {  
 5             context.innerHTML = "Loading"; 
 6             arg = inputcontrol.value; 
 7             //注册回调方法 
 8             <%= ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context")%>;  
 9         } 
10         //在回调方法中注册的接收返回结果的函数 
11         function ReceiveServerData(result, context)  
12         { 
13             context.innerHTML = result; 
14         } 
15     </script> 
16 

  好了,一个无刷新的页面就开发完了,它可以将你在 TextBox 中输入的文字,通过服务器代码写回到页面的 Label 中。是不是很简单?你可以运行一下你的程序看看效果啦!

  下面我们来分析一下这些代码。

  首先,我们看

<%= ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context")%>;

  ClientScript是System.Web.UI.Page对象的一个属性,它是System.Web.UI.ClientScriptManager对象。用于管理客户端脚本,GetCallbackEventReference方法用于注册一个服务器端事件的客户端回调。它的第四个参数“Context”非常重要,但在MSDN中并没有相关的例子和详细的说明。在我上面给的代码中可以看到,调用CallServer方法时,传递的Context参数就是Label1,而ReceiveServerData的第二个参数“Context”就是被传递过来的Label1。在我的例子中,Context被我用于设定一个用来显示服务端返回结果的控件。其实,你可以将任意的对象赋值给Context,它都会被传递给本地端处理回调返回结果的函数,这样,你就可以根据调用前指定的“上下文”灵活的操作返回结果了!在我给出的完整例子中,你可以看到一个使用Context做的无刷新显示GridView的例子。

  在这里我要说个题外话,Context这么重要的参数在MSDN中不但没有详细的说明,而且VS2005中文正式版MSDN中关于回调的例子竟然还是beta2时的实现!这个版本的MSDN可以说是我用过的版本中品质最差的。不过现在的MSND可以用“相当”庞大来形容,出错也是在所难免的,希望下个版本的MSND会好一些。

  OK,在ASP.NET 2.0中开发具有Ajax特性的东东不难吧!其实就是两步:

  1、 在Server端实现ICallbackEventHandler接口,在接口包含的方法中根据传递的参数分别调用不同的处理方法,然后返回结果;

  2、 在Client端注册回调函数(当然你也可以在Server端注册),然后实现处理回调结果的函数。其中,如果对Context能干灵活运行,你就可以做出非常好的效果了。

  在我给出的完整例子中,你们可以看到更完整的处理逻辑和更漂亮的特效,当然,增加的代码还是很少的!

  有将近一年没有写Blog了,手也比较生了。以前cnblogs的文章我是基本上天天都看的,现在一两个星期看一次就不错了,还是走马观花的浏览几篇而已。如今每天都是为了生活而奔波,人在江湖,身不由己呀!

  发了半天牢骚,我也预告一下,我会在最近写一些介绍Atlas的文章。其实Atlas也有很多人都写过了,不过大都是根据官方文档的模式写的,而最近发布的几版CTP变化挺大的(实现的功能也比较诱人!),对新特性介绍的文章比较少,所以我就来献丑了,希望对大家使用Atlas有所帮助。

时间: 2024-12-30 18:39:02

.NET 2.0正式版中无刷新页面的开发的相关文章

“ASP.NET 2.0 正式版中无刷新页面的开发”中示例代码与Firefox兼容的解决

asp.net|解决|示例|刷新|无刷新|页面 这几天正着手开始写毕业设计,因为发生了一些事情,所以一直拖到现在才开始.其实我准备做一个ASP.NET 2.0并且使用AJAX的Web项目,于是到博客园到处寻着AJAX的文章,恰好翻到了Leon.Zhou的ASP.NET 2.0 正式版中无刷新页面的开发按照代码示例和讲解做了一个页面,确实不错啊.因为俺平时几乎都用Firefox,所以就顺手测试了一下Firefox下的效果,结果发现点了Button之后没有反应--于是打开Javascript控制台,

ASP.NET 2.0 正式版中无刷新页面的开发(示例代码的补充)

asp.net|示例|刷新|无刷新|页面 原文请见Leon.Zhou的:http://pfzhou.cnblogs.com/archive/2006/03/31/363342.html 下载了示例代码,并转换成VB了,AJAX功能测试成功.但遇到些小问题:Demo1很正常.Demo2按Leon原来的写法testAJAX.aspx.vb中Line 22不成功.所以我直接在IDE环境中,修改button3的OnClientClick属性,见testAJAX.asp的Line 52.测试成功.Demo

HDwiki5.0正式版发布时间确定

中介交易 SEO诊断 淘宝客 云主机 技术大厅 宣布即将发布旗下开源百科建站系统的最新升级版本--HDwiki5.0正式版. 在HDwiki5.0 Beta版发布后的一个多月里,工作人员广泛收集并采纳众多用户的建议,在经过技术的最终测试后,决定将部分建议在即将发布的HDwiki5.0正式版中予以展现. HDwiki5.0正式版秉承了以往版本的优点,还带来了相当多的更新内容.HDwiki5.0的后台界面的优化和功能的梳理,使操作更便捷,功能放置更合理,视觉上更加美观;语言包修改功能的增加,可以让用

傲游Maxthon3.0正式版完全体验

  望穿秋水--用这四个字来形容傲游Fans对傲游3.0正式版的期盼恰如其分.日前,傲游终于发布了傲游3.0正式版."用上十分钟,你就会爱上她",傲游的开发者对此信心满满.下面就让我们用十分钟的时间,来完整的体验一下傲游3.0正式版如何"可爱". 眼前一亮:全新界面布局 傲游3.0的安装过程及其简单,只需两步就能完成.程序启动后首先映入眼帘的当然是遨游3.0的外观界面,作为新一代浏览器,遨游3.0相比传统浏览器最大改变就是界面变得更加简洁.当然,傲游3.0的简洁是建

360安全卫士 3.0 正式版下载_病毒查杀

360安全卫士是一款安全类上网辅助软件,它拥有查杀恶意软件,插件管理,病毒查杀,诊断及修复四大强劲功能,同时还提供弹出插件免疫,清理使用痕迹以及系统还原等特定辅助功能.360安全卫士适用于windows2k/xp系统,IE5.0以上浏览器.360安全卫士是由奇虎网推出的一款全免费产品.2007-1-31 360安全卫士v3.0正式版发布·主动防御阻止恶意程序安装,保护系统关键位置拦截恶意钓鱼网站,防止帐号.QQ号.密码丢失·超强查杀"破冰"技术,独家清除cnnic中文上网等顽固型恶意软

路过秋天版博客 V2.0 正式版发布 增加后台管理系统[支持多语言、多用户、多数据库、目录级URL]

路过秋天版博客发布历史回顾: 1:2010年11月08日---支持多语言.多用户.多数据库.目录级URL之路过秋天版博客发布[绝对有杀伤力的博客] 2:2010年11月10日---基础却容易被忽略的那点事--web入侵方式及注意事项总结 3:2010年11月15日---支持多语言.多用户.多数据库.目录级URL之路过秋天版博客 V1.0正式版 发布[含详细部署安装说明] 4:2010年11月17日---路过秋天版博客-皮肤制作指南 [附犀利哥入侵攻防站话题] 5:2010年11月29日---路过

静态页中利用AJAX.NET实现无刷新页面

ajax|静态|刷新|无刷新|页面 一. 导言 我们知道,ASP.net应用程序事实是在服务器上运行的,用户的请求要不断地送往远程的服务器,服务器执行完本地的程序后把重新装载页面再发送客户端.所以就出现了不断刷新的问题,页面不断闪烁.用户不厌其烦,运行效率也大大4降低,服务器的负荷加重.事实,客户端的请求在某一时刻只是通过向 Web 服务器提交新的请求来检索对用户输入所做的响应.这种情况下,开发人员可以使用 JavaScript 在客户端上加载所有响应,从而提供更好的用户体验.遗憾的是,在很多情

ASP.NET 2.0,无刷新页面新境界

asp.net|刷新|无刷新|页面     本文由KanyBoy授权www.ASPCOOl.com发表.      "无刷新页面",只是一种不确切的效果描述(其实还有其他各种方法来实现这个效果),更确切的说法是:在页面上用JavaScript调用服务器端的一个方法,然后处理返回的数据.实现它最标准的方法当然是XMLHTTP.但是,程序员都是懒惰的家伙,每个人都希望能有更方便的方法,或者,更佳的包装.比如,Lostinet的Rane就是对XMLHTTP的一个很好的包装.      终于,

Samba4.0正式版上线,支持活动目录

  Samba 4.0 正式版发布了,这是首个支持兼容微软活动目录的自由软件! Samba 4.0 包括一个 LDAP 目录服务器.Heimdal Kerberos 认证服务器.安全动态 DNS 服务器以及实现了活动目录的所有远程调用过程.4.0 版本为微软包括最新 Windows 8 中的活动目录兼容域控制器提供所有支持. Samba,是种自由软件,用来让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS(Server Message Block/Common Interne