ASP.NET AJAX客户端编程之旅(一)——Hello!ASP.NET AJAX

前言

我想,如果今天哪个Web开发人员说没有听说过Ajax技术,那实在太不可思议了。确实,近几年,Ajax这个词以超乎想象的速度红遍Web开发领域,大到Google、网易,小到一些地方公司的主页,都普遍开始加入Ajax元素。这种技术,给Web开发带来了革命性的意义,也使得Web产品及B/S系统的用户体验大大改善。

然而,Ajax用起来华丽、爽快,开发起来却困难重重。JavaScript语言怪异的语法、没有IDE支持以及难以调试,都成为Ajax开发的硬伤。另外B/S系统和C/S不同,浏览器的多样性也给Ajax的开发带来很多困难,使得我们在做Ajax应用时,不得不考虑到各种浏览器的差异,开发过程痛苦至极。

针对这种情况,各种Ajax框架应运而生。这其中的佼佼者,便是微软推出的ASP.NET AJAX框架。它不仅给使得开发Ajax应用变得容易很多,而且更可以与微软的开发工具无缝集成,给.NET平台的开发人员带来很大方便。

这一系列文章,就是要介绍这个框架的客户端编程。

ASP.NET AJAX能做什么?

ASP.NET AJAX框架带来的好处和特性实在太多了,这里简要列几条:

1.扩展了JavaScript语言,增加了面向对象特性。简化了一些DOM操作的语法。

2.一系列的服务器端控件可以让程序员不编写JS,而仅通过拖控件完成Ajax应用的开发。

3.开创性的提出了客户端组件、行为组件等概念,并提供了一种类似XML的标签式语言,给Ajax客户端编写带来革命性创新。

4.完善的代理模型机制,使得开发人员可以在JS中直接调用后台程序,就像在后台调用一样。

5.各种数据类型的自动转换,特别是对于复杂类型,内置自动序列化和反序列化机制,是的前后台可以直接共用复杂类型,而不必手工转换。

6.提供了大量的客户端组件,方便程序开发。

7.屏蔽了浏览器之间的差异,让开发人员可以不再处理那些令人头疼的浏览器差异问题。

服务器端编程 VS 客户端编程

ASP.NET AJAX框架提供了两种开发模型:服务器端编程和客户端编程。前者使用方便,开发人员可以不懂JS和Ajax,而是通过传统的ASP.NET开发方式完成Ajax应用的开发,但是其控制粒度较粗。而后者开发难度相对较大,需要开发人员熟悉JavaScript,并熟悉ASP.NET AJAX提供的各种语法支持及客户端编程模型,但是其控制粒度精细,有利于提高应用的性能和质量。

本系列文章将重点介绍客户端编程。

开始ASP.NET AJAX之旅:让我们一起对ASP.NET AJAX说Hello!

下面,我将分别用两种方式实现一个最简单的Ajax应用:单击按钮,异步调用后台类中的一个方法,返回一个字符串,显示在页面指定位置,整个过程不刷新页面。其效果图如下:


左图为单击前,右图为单击后。整个过程页面无刷新,所显示的字符串是从后台程序得到的。下面,将用两种方法实现这个小应用。

没有ASP.NET AJAX的日子:想说Hello不容易!很难很费力!

首先,我们不使用任何框架,手工创建这个Ajax应用。

1.创建工程

打开VS(我用的是2005),创建一个新的Website,命名为AjaxTest。完成后,添加系统文件夹App_Code。

2.创建后台程序

下面我们要编写供前台调用的后台程序,这个程序很简单,只需要返回一个字符串。我们在App_Code文件夹下添加一个新的文件Hello.cs,这是个C#类文件,其详细代码如下:

Hello.cs:

1using System;
2
3public class Hello
4{
5  public Hello() { }
6
7  public string SayHello()
8  {
9    return "Hello!Ajax";
10  }
11}

代码没有什么好解释的,只有一个方法,就是返回“Hello!Ajax”这个字符串。

时间: 2024-10-16 15:13:53

ASP.NET AJAX客户端编程之旅(一)——Hello!ASP.NET AJAX的相关文章

ASP.NET AJAX客户端编程之旅(五)

ASP.NET AJAX客户端编程之旅(五)--以组件的思想开发Ajax应用:行为.绑定及xml-script 初识行为组件 行为组件一词中的"行为"是从单词Behavior直译过来的.但是我个人认为,就其作用来说,应该叫"属性赋予组件"更合适一点.因为行为组件实际的作用是:为某一控件赋予某种属性.例如ClickBehavior是为某个控件添加"具有单击事件"这个属性,而OpacityBehavior则是为控件添加"透明显示"

ASP.NET AJAX客户端编程之旅(四)

ASP.NET AJAX客户端编程之旅(四)--以组件的思想开发Ajax应用:客户端组件初探 以组件的思想重新审视Ajax客户端开发 在进入主题之前,我想和大家一起再来看一下本文章系列第一篇中的一个Demo:ASPNETAJAXTest.我现在将其中的客户端代码重新贴在这里. Default.aspx: 1<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs&q

ASP.NET AJAX客户端编程之旅(三)

ASP.NET AJAX客户端编程之旅(三)--让JavaScript和C#无障碍沟通:数据类型自动转换&序列化 通过前两篇文章,我们知道使用了ASP.NET AJAX框架后,在JavaScript中调用后台WebService方法非常方便,几乎可以看做是"直接调用".那么,这里引出了一个问题:调用方法就牵扯到参数的传递,而JavaScript和C#毕竟是两种不同的语言,数据类型怎么沟通?简单型数据类型还好说,如果我们需要的参数是个复杂类型呢?如分层架构中经常用到实体类做参数,

ASP.NET AJAX客户端编程之旅(二)——知其所以然

如何在客户端直接调用WebService中的方法? 1.Web.config中需要配置好运行ASP.NET AJAX框架相应的配置项,当然,建立一个ASP.NET AJAX Enabled Web Site项目时,Web.config已经配置好了. 2.想让某个WebService可以被JS调用,需要做一下几步: I.在这个WebService文件里用"using System.Web.Script.Services;"引入这个命名空间. II.在这个类的上面添加"[Scri

ASP.NET AJAX客户端编程之旅(七)——剩下的问题(完结篇)

关于Loading... 相信做Ajax应用的朋友没有不使用loading的,不然网络延迟会让用户体验非常差,而且用户会不知道系统正在工作.那么当使用ASP.NET AJAX客户端编程时,怎么做loading呢? 我们先来分析一下loading应该什么时候显示,什么时候终止.一个典型的异步交互过程如下: 1.用户发出请求 2.网络延迟 3.服务器端处理 4.服务器返回数据 5.网络延迟 6.客户端呈现数据 在这个交互过程中,loading应该在第一步后出现,而在第六步结束后才消失.结合前面的知识

ASP.NET AJAX客户端编程之旅(六)——来做一个自己的客户端控件

通过前面的文章,我们了解了ASP.NET AJAX框架的很多知识.在这一篇文章中,我们来做一个自己的ASP.NET AJAX客户端控件:PasswordValidator.这个控件关联到的DOM元素是一个span或div,并且关联到一个password类型的input标签,当用户在input中输完密码并且这个input失去焦点时,检测用户输入的密码是否合理,如果合理,则给出这个密码的安全程度. 从这一篇开始,将使用VS2008作为IDE,请朋友们注意. 建立AJAX客户端控件控件的骨架 在以前的

探讨ASP.NET MVC框架内置AJAX支持编程技术

传统型ASP.NET Web Forms是基于同时包含了表现层和后台代码的Web页面, 所以,紧随其后出现的ASP.NET AJAX,特别是这个框架的服务器端控件并没有像 它们本应该的那样光芒四射.于是,很多跟随AJAX时髦的ASP.NET开发者只是向 ASP.NET页面中随意地放置一些UpdatePanel控件以便使其程序实现基本的AJAX支 持.实际上,这只是防止了页面的"闪烁",而根本上页面还是进行 了完整的回发,并且要经历整个页面的生存周期.为了消除ASP.NET Web Fo

ASP.NET AJAX客户端生命周期分析(理论篇)

一.引言 微软的ASP.NET AJAX框架,作为一个相对比较完善的AJAX框架,有许多方面值得我们作深入研究.本文中,我们将结合一个具体的例子试图探究ASP.NET AJAX框架的客户端生命周期过程. [注]阅读本文最好要结合"ASP.NET应用程序生命周期概述"和"ASP.NET页面生命周期概述"两篇文章共同学习. 二.ASP.NET AJAX客户端生命周期原理 因为ASP.NET AJAX框架在开发思路上极大地借鉴了ASP.NET 2.0的开发技术,而且将会被

asp.net Application_AcquireRequestState事件,导致Ajax客户端不能加载_实用技巧

开发环境IIS7下一切正常,但是部署到IIS6服务器以后, 每次刷新页面总出现Ajax客户端不能加载的问题. 复制代码 代码如下: protected void Application_AcquireRequestState(object sender, EventArgs e) { string oldToken = Session["token"].ToString(); } MSDN上说: Application_AcquireRequestState, 当ASP.NET获取当前