详解Ajax在ASP.NET中的实现方式

开发 后端 前端
Ajax应该不是一项技术,是一种思想而已,在ASP.NET中也可以实现Ajax,本文将给大家介绍这一实现方法。

Ajax 应该不是一项技术,是一种思想而已,跟ASP.NET 以及其它Web开发语言没有什么太大关系,这里只是谈谈 ASP.NET 中目前使用的Ajax 技术以及其它一些实现 Ajax 的优秀框架。
Ajax已经很流行一阵子了,现在谈Ajax觉得有点老土。目前所谓的Web2.0 网站,基本上没有不使用Ajax 的,就如使用RSS一样,就如同一个标签,贴上去就成了 2.0。Ajax 具体细节不谈,其目的就是让用户触发一些操作的时候,页面不会全部刷新,只刷新待更新的“部分页面”,加载数据的过程中,用 Loading 的图片来表示正在加载数据,不只是看起来挺不错,也提高了用户的访问体验,有一种酷酷的感觉。

至于ASP.NET 中用到的Ajax ,我想大多数人使用的是Ajax.net / AjaxProfessional 或者ASP.NET 2.0 中带有的Atlas 框架。因为都用过,我感觉这些都不是很好的Ajax 解决方案。

AjaxPro用起来不是很方便,页面需要在Page_Load 里面注册,类似于

以下是引用片段:
  private void Page_Load(object sender, System.EventArgs e)
  {
  AjaxPro.Utility.RegisterTypeForAjax(typeof(DataAccess.MyAjax));
  }

而且ASPX 页面要包含一个Runat=Server 的标记,这样Ajax.net 会将用到的一些通用函数以及你自定义的函数加载进来,如果没有 其实也可以,手动添加就可以了。但是,在我以前做过的应用中,时常出现的一些问题,比如,经常发现浏览器状态栏会有js 脚本错误,而此时你所做的Ajax 效果会全部失效,解决办法就是,把那个 Ajax.dll /AjaxPro.dll 给重新覆盖一下就可以了,问题的原因究竟是什么,目前还不知道。

至于Atlas,我对它的感觉其实就跟对DataGrid 的感觉一样,嗯,这种控件的好用是好用,很方便,但是,真正做一些Web 应用的时候,你不得不考虑到性能以及分层等各种问题。我想,在比较正式的Web 应用中,没几个人去用 DataGrid 去显示一些数据吧,建议大家尽量少用这些控件。另外就是,Atlas 的执行效率确实不够理想,一直在那里 Loading,等了好长时间,竟然出现什么脚本错误,汗。

那还有没有其它解决方案吗?你可以自己写些Javascript 函数去实现。不过,我这里推荐用jQuery 这个Javascript 框架,从百度百科引用一段对其的介绍:

jQuery 是继prototype之后又一个优秀的Javascrīpt 框架。其宗旨是——WRITE LESS,DO MORE,写更少的代码,做更多的事情。

它是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。

jQuery是一个快速的,简洁的javaScript 库,使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供 AJAX 交互。

jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。

jQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html 里面插入一堆JS来调用命令了,只需定义id 即可。

看来这段介绍你会知道,Ajax 效果只是 jQuery 的众多功能的一种,一般来说,Web 应用中使用Ajax,必然也离不开Javascript,而jQuery 正是为大家封装了一些 JS 函数,使得你不在被JS 的纷繁复杂所担心,一切由jQuery 帮你实现。

看一个小例子,就知道用jQuery 做 Ajax 实在是太方便了。

比如某个 ASPX 或者 HTML 页面里面有个Button,点击触发Ajax加载数据,显示到里面。点击那个Button 触发一个JS函数即可:

以下是引用片段:
  function GetNews()
  {
  $("#News").html("Loading News......");
  $.ajax({
  type:"post",
  url:"/ajax.aspx?act=getnews",
  dataType:"html",
  data:"",
  success:function(result)
  {
  $("#News").html(result);
  }
  });
  }

这个函数就会先在那个 SPAN 里面显示“Loading News....”,通过异步调用,访问 /Ajax.aspx 这个页面,通过传递的 URL 参数 act=News 告诉页面需要什么类型的数据,你可以根据不同的参数,将数据通过Ajax.aspx 直接 Write 到页面上,然后返回给上述 JS 函数,呈现到页面上,就这样简单搞定!

当然,jQuery 里面并不是只有这一种Ajax 效果实现方式,这里给出一些jQuery 的资源,花上几个小时的时间学一下,很值得:

jQuery 官网:http://jquery.com/

jQuery 中文 API 文档: http://jquery.org.cn/visual/cn/index.xml

jQeury 中文入门教程: http://www.k99k.com/jQuery_getting_started.html

至于其它的Javascript优秀框架有很多了,比如Yahoo! User Interface Library,Prototype,Rico,Qooxdoo,Dojo 等,另外还有Ajax 方面一些资源可以参考一下这里收集的资源。

【编辑推荐】

  1. 使用ASP.Net 3.5的Ajax与Web服务开发实例
  2. 在PHP中如何判断AJAX请求
  3. AjaxPro在.NET中的应用
责任编辑:book05 来源: cnblogs
相关推荐

2009-07-22 16:25:41

ASP.NET AJA

2011-07-04 15:41:14

AjaxASP.NET

2009-07-30 12:19:32

ASP.NET中使用A

2009-01-16 13:17:16

AjaxASP.NET.NET

2011-07-12 13:53:25

ASP.NETAjax

2009-07-24 17:31:56

ASP.NET AJA

2009-07-20 17:59:07

JavaScript调ASP.NET AJA

2009-07-22 17:45:11

ASP.NET插件

2009-07-21 17:18:26

UpdateProgrASP.NET AJA

2009-07-20 13:54:31

ScriptManagASP.NET AJA

2009-07-22 16:17:39

ASP.NET AJA

2009-07-24 13:41:15

ASP.NET AJA

2009-07-22 16:11:43

ASP.NET AJA

2009-07-22 16:05:34

ASP.NET AJA

2009-01-08 10:20:56

AutoCompletAjaxASP.NET

2009-07-20 13:14:25

安装ASP.NET A

2009-07-31 13:24:43

ASP.NET AJA

2009-07-22 15:58:52

ASP.NET AJA

2009-07-20 17:39:36

WCF服务ASP.NET AJA

2010-01-11 09:18:28

点赞
收藏

51CTO技术栈公众号