ASP.NET与Ajax的实现方式小总结
Ajax已经很流行一阵子了,现在谈Ajax觉得有点老土,-_____-```。目前所谓的Web2.0网站,基本上没有不使用Ajax的,就如使用RSS一样,就如同一个标签,贴上去就成了2.0。Ajax具体细节不谈,其目的就是让用户触发一些操作的时候,页面不会全部刷新,只刷新待更新的“部分页面”,加载数据的过程中,用Loading的图片来表示正在加载数据,不只是看起来挺不错,也提高了用户的访问体验,有一种酷酷的感觉。
至于ASP.NET中用到的Ajax,我想大多数人使用的是Ajax.net/AjaxProfessional或者ASP.NET2.0中带有的Atlas框架。因为都用过,我感觉这些都不是很好的Ajax解决方案。
AjaxPro用起来不是很方便,页面需要在Page_Load里面注册,类似于
privatevoidPage_Load(objectsender,System.EventArgse) { AjaxPro.Utility.RegisterTypeForAjax(typeof(DataAccess.MyAjax)); }
而且ASPX页面要包含一个Runat=Server的<Asp:From>标记,这样Ajax.net会将用到的一些通用函数以及你自定义的函数加载进来,如果没有<Asp:From>其实也可以,手动添加就可以了。但是,在我以前做过的应用中,时常出现的一些问题,比如,经常发现浏览器状态栏会有js脚本错误,而此时你所做的Ajax效果会全部失效,解决办法就是,把那个Ajax.dll/AjaxPro.dll给重新覆盖一下就可以了,问题的原因究竟是什么,目前还不知道。
至于Atlas,我对它的感觉其实就跟对DataGrid的感觉一样,嗯,这种控件的好用是好用,很方便,但是,真正做一些Web应用的时候,你不得不考虑到性能以及分层等各种问题。我想,在比较正式的Web应用中,没几个人去用DataGrid去显示一些数据吧,建议大家尽量少用这些控件。另外就是,Atlas的执行效率确实不够理想,一直在那里Loading,等了好长时间,竟然出现什么脚本错误,汗。
那还有没有其它解决方案吗?你可以自己写些Javascript函数去实现。不过,我这里推荐用jQuery这个Javascript框架,从百度百科引用一段对其的介绍:
jQuery是继prototype之后又一个优秀的Javascrīpt框架。其宗旨是——WRITELESS,DOMORE,写更少的代码,做更多的事情。
它是轻量级的js库(压缩后只有21k),这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器(IE6.0+,FF1.5+,Safari2.0+,Opera9.0+)。
jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTMLdocuments、events、实现动画效果,并且方便地为网站提供AJAX交互。
jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。
jQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。
看来这段介绍你会知道,Ajax效果只是jQuery的众多功能的一种,一般来说,Web应用中使用Ajax,必然也离不开Javascript,而jQuery正是为大家封装了一些JS函数,使得你不在被JS的纷繁复杂所担心,一切由jQuery帮你实现。
看一个小例子,就知道用jQuery做Ajax实在是太方便了。
比如某个ASPX或者HTML页面里面有个Button,点击触发Ajax加载数据,显示到<SPANID=News>里面。点击那个Button触发一个JS函数即可:
functionGetNews() { $("#News").html("LoadingNews......"); $.ajax({ type:"post", url:"/ajax.aspx?act=getnews", dataType:"html", data:"", success:function(result) { $("#News").html(result); } }); }
这个函数就会先在那个SPAN里面显示“LoadingNews....”,通过异步调用,访问/Ajax.aspx这个页面,通过传递的URL参数act=News告诉页面需要什么类型的数据,你可以根据不同的参数,将数据通过Ajax.aspx直接Write到页面上,然后返回给上述JS函数,呈现到页面上,就这样简单搞定!
以上内容就是给大家分享的ASP.NET与Ajax的实现方式,希望大家喜欢。