本书是讲述AJAX框架方面最完整最权威的一本指南,作者对该项技术的灵活性、扩展性进行了深入浅出的剖析,本书适合初级、高级开发人员。
ASP.NET AJAX服务器控件甚至能封装最强大的AJAX功能。帮助你构建更加优雅、可维护和可扩展的应用程序。这是第一本针对有经验的ASP.NET开发人员所编写的用于实现自定义ASP.NET AJAX服务器控件的书籍。不同于其他ASP.NET AJAX书籍,本书专注于服务器控件的开发以及在ASP.NET 3.5 AJAX中所展现出来的效率提升,并且探讨在最新的Visual Studio 2008中如何加快开发AJAX的特性。
创建面向对象的跨浏览器的JavaScript代码,可以支持.NET样式的类、接口、继承和方法覆盖。
与组件、行为和控件一起工作并了解它们如何与DOM元素关联。
了解Sys.Application以及在微软AJAX库中进行对象创建、初始化和事件处理所扮演的作用。
构建Extender和Script控件,提供集成的脚本生成相应的客户端副本。
本地化ASP.NET AJAX控件,包括客户端脚本。
发现ASP.NET AJAX客户端和服务器之间的通信架构和针对Windows Communication Foundation(WCF)新的支持。
理解ASP.NET AJAX应用程序服务。
创建自定义应用程序服务。
为局部环境回传设计控件。
理解ASP.NET AJAX控件工具箱的体系架构及它所提供的诸多特性。
使用AJAX控件工具箱开发具有高交互性的控件。
理解AJAX控件工具箱的体系架构并充分利用工具箱来构建控件。
Adam Calderon 是interknowlogy公司应用程序开发实践团队负责人也是微软MVP。他从Alpha版本开始对ASP.NET AJAX进行研究,并且将这项技术率先应用到了ATLAS访问程序中。他是微软UI服务器框架咨询理事会的成员,参与引导微软ASP.NET平台未来的发展方向。Adam也是开发社区的活跃成员。他曾在UCSD授课并担任微软TechEd技术大会、用户组以及贯穿整个加利福尼亚南部程序爱好者团队的讲师。
Joel Rumerman 高级.NET开发人员,从ASP.NET AJAX代码代号为Atlas发布以来一直在进行研究。Joel现在就职于一家规模很大的虚拟地图混合商业房地产信息公司。
本书得到了微软核心技术团队负责人和多位作者的支持。该系列的作者团队中汇聚了很多技术专家,他们有的在微软从事软件技术架构、软件开发工作,还有来自外界社区的开发人员。
—— Don Box 微软架构师
对专业.NET开发者来说,本书是一个重要资源。它涵盖了所有的基础知识,从专家的观点到引证,再到操作方式。这一系列的书籍是那些想扩展基础知识和专业技能人员的必备书籍。
—— John Montgomery
微软开发区、主群组程序经理
本系列包含对开发者来说很重要的信息,他们需要从.NET Framework中获得大量信息。我们的作者都是选自创造这些技术的关键人物,也是最受尊敬的专业人员。
—— Brad Abrams
微软组群程序经理
介绍
服务器控件是我们所构建的ASPNET应用程序不可或缺的一方面。它们将浏览器外观和服务器功能封装于一个可重用的对象之中。它们可以在一个单独的ASPNET应用程序中跨多个页面使用,同时还可以跨多个ASPNET应用程序使用。ASPNET有许多预构建的服务器控件。我们有一些简单的控件(例如,标签),还有一些类似GridView这样的复杂控件。我们可以创建自己的服务器控件来实现没有一个现有控件可以满足的需求,只需要通过继承合适的基类然后重载所需的方法,即可实现。
这种使用服务器控件的方式封装了浏览器的外观和服务器功能的模式,从起初的ASPNET 10开始就很好地为我们的需求服务,但是我们对服务器控件的需求一直在改变。
最近刚出现的新服务器控件需求,就是与AJAX功能的结合能够直接放在服务器控件的能力。
这种需求出现的原因是,我们的Web应用程序需要更立即的响应以及比传统ASPNET控件提供的重画整个屏幕的那种模式更直观的交互性。这种需求已经浮现出来,因为用户正在使用类似Gmail、Livecom、Yahoo!Mail以及其他一些不需要每次点击一个按钮或需要接收新数据时重画屏幕这样的站点。所以,它们选择了AJAX来获取新的数据,然后基于所取得的新数据来更新或添加屏幕的一部分。因为这些站点的大量应用,用户在使用这些站点的过程中已经习惯了这种体验,他们期望其他站点也能够像他们所喜好的这些站点一样,表现得同样优雅。
因为我们的用户正在要求一种本质上使用了AJAX的站点体验,我们使用服务器控件来构建我们的ASPNET站点,我们需要一个简单的方式来创建服务器控件,不仅需要封装浏览器外观和服务器功能,而且还要包含AJAX的功能,这样服务器控件才启用了AJAX功能。
退一步看,不像其他一些你可能已经读到过的技术,ASPNET AJAX服务器控件没有提供任何不能实现的东西。我们总是能够将AJAX功能嵌入服务器控件中……这还真苦恼。
我们曾有好几种方法在服务器控件中包含JavaScript,比如将其作为一个资源嵌入,但是我们最终其实还是要做相同的三个任务。为了让我们的服务器控件具有客户端的兼容性,我们总是需要连接几个字符串来构成一个JavaScript语句和功能,写探测浏览器的语句来确保JavaScript有跨浏览器的兼容性,然后添加属性或呈现出附着JavaScript功能到服务器控件的客户端版本的HTML。这并非不可能,但是这通常有某种错误倾向,而且总是有这种服务器代码和JavaScript的混合,而变得很难维护,甚至是更难以阅读。
另外,如果你有几个拥有客户端能力的服务器控件,要确保每个服务器控件要求的客户端功能在呈现到浏览器时没有相互覆盖,这是很困难(并非不可能)的事情。跟踪到那样的问题也总是要大约有趣的一个小时吧。
如果我们想要包含一个用户能在服务器控件中点击按钮时与服务器异步通信的机制,那么困难度就会呈指数上升。就算是有一个通信库的帮助器工具,让控件正确地和服务器通信还是需要一些诀窍。
这些妨碍很有问题,会导致一些不好的编程习惯和代码,会吓跑一些程序员,让它们甚至不敢尝试在它们的服务器控件中包含进AJAX功能。
这些问题正是微软ASPNET AJAX所解决掉的问题。
在本书中,我们教你如何使用ASPNET AJAX来创建封装了AJAX功能的服务器控件。ASPNET AJAX提供了服务器和客户端编程的构建模型,用来轻易地添加AJAX能力到服务器控件。但是ASPNET AJAX减少了给服务器控件添加AJAX能力的复杂性,我们可以创建那些有AJAX能力的服务器控件,只会受到自己的创造力的限制。如果我们想要一个能够自己根据新数据更新的列表框,如果我们想要一个能动态从服务器生成预先键入(typeahead)的文本框,或者我们想要一个按钮来提交地址去验证,我们都可以轻易地通过ASPNET AJAX来完成这些事情。
ASPNET AJAX组件
这本书主要探讨ASPNET AJAX的三个方面:微软AJAX库、ASPNET 20 AJAX 扩展以及ASPNET AJAX 控件工具箱。这里对这些不同组件给出一个快速概览。
微软AJAX库
微软AJAX库是ASPNET AJAX的JavaScript编程框架。它提供了全部的客户端编程结构,你可以使用其创建新的客户端对象和组件。它包含于MicosoftAjaxjs JavaScript文件中,而后者已经嵌入到了SystemWebExtensionsDLL中。
ASPNET 20 AJAX 扩展
ASPNET 20 AJAX Extension是服务器对象,例如ScriptManager、ScriptControl和ScriptDescription,它提供了一个在微软AJAX库和ASPNET开发之间的连接。这些服务器对象展示了ASPNET AJAX和其他AJAX框架的一个重要的区别,因为它们为处理客户端代码(同时也允许我们创建基于AJAX的服务器控件!)提供了服务器编程模型。与微软AJAX库一样,它们也包含在SystemWebExtensions DLL中。
ASPNET AJAX 控件工具箱
ASPNET AJAX 控件工具箱是一个构建于ASPNET AJAX之上的一个共享代码项目。这是Microsoft和ASPNET AJAX社区共享的成果,目标在于开发强大和可重用的ASPNET AJAX扩展和控件。
它其实并不是ASPNET AJAX的一部分,但是它提供了不错的服务器控件和扩展控件,它对ASPNET AJAX社区而言是非常宝贵的。通过它来创建新的扩展控件也是我们会全面介绍的一个主题。
本书解析
这本书分成了四个主要部分。在第一部分,我们聚焦于Micosoft AJAX库及其底层的JavaScript语言的基础。我们称这部分为客户端代码。在第二部分,我们聚焦于创建分布式的基于AJAX的控件,我们称这部分为控件。第三部分为通信,我们聚焦于客户端控件与服务器通信的不同方式。最后,在第四部分,我们聚焦于AJAX 控件工具箱,一个稍微高级的创建基于AJAX的服务器控件的模型。最后一部分为“AJAX 控件工具箱”。
客户端代码
第1章,JavaScript编程,主要是关注JavaScript这个强化微软AJAX库的编程语言。我们在JavaScript上面花了一整章,是因为非常多的开发人员(也包括我们自己)在和这个语言工作的时候隐藏了太多的关键细节;而且因为你正准备为基于AJAX的服务器控件编写如此多的JavaScript代码,所以扎实的基本功是很重要的。
第2章,微软AJAX库编程,我们从第1章停下来的地方继续。我们解析微软AJAX库是如何构建在JavaScript上而提供一个NET开发人员所熟悉的一个编程平台。
控件
从第3章开始,组件,我们通过学习如何使用和从三个关键客户端类型(组件、控件以及behaviors)来开始创建完全封装好的基于AJAX的控件。我们会讲述理论,并且也提供几个练习例子。
在第4章,SysApplication,我们会讨论SysApplication以及它如何可以表现得像我们能够与之交互的客户端运行时那样,这可能是微软AJAX库里面最重要的部分。
第5章,为服务器控件添加客户端能力,当我们学习到如何创建那种可以自动创建相应组件的服务器组件时,我们就会把服务器混合起来。
在第6章,ASPNET AJAX本地化,我们继续为控件添加在ASPNET AJAX中本地化的深度检测能力。
最后,在第7章,局部回传环境中的控件开发,我们基于UpdatePanel会如何影响控件开发的考虑,而把控件的封装进行隔离。
通信
在第8章,ASPNET AJAX通信架构,我们开始看看在ASPNET AJAX中使用WCF(Windows Communication Foundation)服务、页面方法和客户端Web Service代理的通信。
在第9章,应用程序服务,我们将覆盖到应用程序服务,并且包含一个教你如何构建你自己的应用程序服务的演示。
AJAX 控件工具箱
从第10章开始,ASPNET AJAX 控件工具箱架构,我们来看看AJAX 控件工具箱。我们会探讨被工具箱控件使用的基础类,以及提供额外特性的支持类和设计类。
最后,我们在第11章总结全书,使用ASPNET AJAX 控件工具箱来给服务器控件添加客户端能力,这里我们将使用AJAX 控件工具箱来给服务器控件添加客户端能力。这章包括如何构建一个新的扩展控件并为其提供设计时特性。
有什么还没讲
你也许会感觉看到这样一段文字来谈论我们没有讲到的事情会有点奇怪。但是我们是有两点原因的。
第一,本书相对于整个详尽的ASPNET AJAX而言,只是讨论了一个相当狭窄的主题。正因为如此,我们介绍了ASPNET AJAX的基础或历史,而不是一般的入门教程。而我们也做了一个假设,你已经或多或少地掌握了一些ASPNET AJAX的知识。如果你没有,也不要担心;在你感觉容易而不需要花太长时间的地方多学习ASPNET AJAX的知识,会使后面学习本书其他部分也很容易。对于这类信息,微软ASPNET AJAX网站http://aspnet/ajax上面有非常精彩的资源。
第二,省略了一个熟悉的ASPNET AJAX主题,我们想要找一个机会,也想在来得及的时候告诉你而捍卫我们的决定。其实这也是我们不断反复争论的一些事情,而我们也询问过很多同事并征求他们的意见,这个决定对我们来说真是相当不容易。
没有介绍如何使用UpdatePanel服务器控件。
OK,你还没有合上本书吧?好的,让我们来解释一下我们是如何以及为什么要做这个决定的。
简单而言,UpdatePanel是一个服务器控件。它在ASPNET AJAX里面提供一个快速但是并不干净的方式来刷新一个页面的局部,这样页面就可以走过它自己一般的生命周期却不用在页面处理完成时刷新整个页面。如果使用它,我们可以不必警惕我们自ASPNET 10时代就开始的网页编程方式。这很好,而且对Microsoft而言也是个快速的胜利。它允许ASPNET AJAX能够被ASPNET的开发人员快速使用,同时也提供了一种独特的优势来对抗其他的AJAX框架。
然而,UpdatePanel也仅仅是一个服务器控件,它的开发方式有所不同,它和我们所涉及的ASPNET AJAX服务器控件类型开发没有太多可比较的特性。
我们并不是说它不是一个重要的服务器控件,而其实它在AJAX世界里是有地位的。或者说,它是一个极具价值的工具,其复杂性和合理的用途都值得写一本小书,然而不是这本。
最后,虽然我们没有讲如何使用UpdatePanel,我们却谈及了如何创建服务器控件让其能够在UpdatePanel或更特定的局部回传环境中正常工作。我们期待你想让新服务器控件能够工作于任何ASPNET环境,即使是一个局部回传环境也不例外。虽然如此,局部回传环境需要我们使用一些不同的方法,新的ScriptManagerRegisterXXX方法开始变得很普遍,还需要注意一下我们是如何创建服务器控件的。所以,第7章将主要讲述这个主题。
为什么是服务器控件
围绕服务器控件来写这样一本书,就让我们可以更深入地挖掘对于Web应用程序开发者十分重要的一个主题。包含ASPNET AJAX技术方方面面的书籍,现在都有了。因为它们在于覆盖很宽广范围的主题,每件事都要尝试,但是在关于ASPNET AJAX的某具体部分如何工作时就会遇到麻烦。它们尝试给予主题的那种泛泛而谈却恰是我们认为的创建服务器控件的关键。许多开发人员会快速地翻过那些很概略的书本,这是我们的经验,因为工作于一个真正的Web应用程序生命周期里,非基本状况就会迅速出现。
目标读者
这本书的主要目标人群还是那些有过自定义Web服务器控件开发经验的ASPNET开发者。我们期待你能通过阅读本书来获得新的ASPNET AJAX技能,进而强化你已有而精通的ASPNET开发技能。你开发的应用程序要求优雅、专业、易于维护以及可扩展性,所以你为了获得优势,趋于在任何可能的时候使用服务器控件。
除了你在ASPNET上的经验,我们还期望你已熟悉JavaScript和ASPNET AJAX基础。因此,我们就不再覆盖如何建立一个新的支持ASPNET AJAX Web应用程序方面的东西。尽管我们会覆盖一些JavaScript知识,但是我们的起始级别是假定一些已有知识的存在。
我们的目标是给你提供你所需要的工具,来构建可重用的ASPNET AJAX服务器控件,或者AJAX 控件工具箱扩展控件。我们的感觉是,有一定经验的ASPNET开发者是有理由能够通过本书学会这些技能来创建新的ASPNET AJAX服务器控件,然后再添加这个控件到它们的ASPNET开发工具箱中。
必要条件
本书需要ASPNET 35 AJAX和Visual Studio 2008。我们大量覆盖了包含在ASPNET 35 AJAX而不包含在ASPNET 20 AJAX的特性,以及诸如自动属性和JavaScript IntelliSense这样在C#和Visual Studio 2008中的新功能。
源代码
本书的源代码例子可以在网站上找到:wwwinformitcom/title/9780321514448。
如今ASPNET平台上已经架构着数以百万计的网站,这或许是Web开发方面最有生产力的平台之一。在过去将近10年的开发和使用过程中,ASPNET已经在它的周围形成了一个强大的社区,以及一个由开发者构成的并且蓬勃发展的生态系统。
页面框架和其相关的服务器控件是ASPNET的成功、开发者经验、编程模式,以及可扩展性的精髓所在。写这个序言,把我带回到了早期的ASPNET时代,也更提醒了我Web平台的框架在不断演变。
在20世纪90年代后期,Web还是一个非常初期的应用程序平台。浏览器带来了新级别通信的潜力,但是几乎没有提供兼容性的能力(记得HTML 32吗?),而且诸如“无状态编程模型”的概念也成为了一种奇怪的范例。服务器控件提供了一系列类似的抽象,然后为Web(Visual Basic风靡一时)创建了一个基于快速应用程序开发(RAD)编程体验的组件,并允许开发者像它们最初接触Web那样自然地构建下一代数据驱动应用程序。
在2006年,AJAX的追随者们重新创造了一种作为应用程序平台的Web应用。今天,AJAX成为了主流,而且毫不夸张地说,它无处不在。它允许构建有交互性的用户体验,这也是用户所期待的。当然,它带来了一些新而又彼此相同的挑战:变化的浏览器API函数和不熟悉的基于脚本的编程模型。ASPNET(特别是服务器控件)又一次提供了创造一种具有生产力的开发模型,为基于AJAX的技术合作,也将服务器和客户端行为封装为一种熟悉而统一的组件模型。
ASPNET创造了一个完美的AJAX故事。传统的服务器控件创造一个简单的以服务器为中心的AJAX编程模型,但是它们仅是故事的一部分。新一代的服务器控件更是支撑起了一种AJAX脚本框架,可以独立地构建一种客户端为中心的AJAX编程模型。核心的框架是由AJAX 工具箱来组成的,它提供了一组引人注目的“即插即用”的组件和一个为了更好开发ASPNET AJAX栈的开源项目。我很兴奋地看到这个完整的故事在本书中得到了展示。
在本书中,Adam和Joel致力于深入ASPNET AJAX框架的内部工作和扩展性,从而提供超越基础的知识。他们通过介绍由脚本框架、架构以及创建支持AJAX服务器控件的技术所创建的编程模式来做到这一点。它们也讲到了一些诸如本地化和错误处理这样很有关联的主题。通过提供一个概念性的指导来理解和展开这个框架,这本书肯定可以为任何正在寻找解决ASPNET AJAX真实潜力的应用程序和组件开发者提供帮助。
Nikhil Kothari
微软NET开发者平台软件架构师
(美)Adam Calderon; Joel Rumerman 著:暂无简介
罗江华 罗恒峰 等译:暂无简介
AJAX无疑是现在最为热门的一项技术。但是,Ajax本身并不是一项新技术,AJAX是由JavaScript、XML、XSLT、CSS、DOM和XMLHttpRequest等多种技术组成的。 微软顺应潮流最先推出了Atlas,它是ASPNET AJAX的前身,微软最终将其命名为ASPNET AJAX。
还记得上网提交注册信息给网站吗?用户不得不将大量的时间花费在等待上。即使客户端和服务器的连接状况非常好,网络延迟可以忽略不计,在加载新页面时浏览器中仍然会有一个显示空白页面的过程,也就是一次“闪烁”。这是因为浏览器需要清除原有的内容并重新写入新的内容。Ajax应用程序则是借助XMLHttpRequest对象的帮助,只从服务器端取得必要的表示这一条评论的数据,而不是新页面的所有内容,避免了在网络中传输不变内容所造成的浪费,也就自然减少了用户等待的时间。
AJAX应用程序通常很重视用户体验,它们一般都会关注目前用户的操作,并及时地给出下一步的提示。即使是一个很小的动作,客户端都可以将其回送至服务器,然后服务器即可充分利用它掌握的大量信息以及强大的计算能力迅速向用户给出最恰当的提示。例如,某个系统中用户的所在地信息可以由省份和城市两部分组成。在Web页面上通常使用两个下拉列表让用户选择。当用户选择了省份后,Ajax应用程序就可以通过XMLHttpRequest对象取得该省内所有城市的列表,并填充到城市列表中供用户进行下一步选择。
AJAX将许多不同的技术结合在了一起,而它们之间的协调者就是运行于浏览器中的JavaScript。在AJAX中,JavaScript的功能已经不只是在页面上显示漂浮广告或修改浏览器状态栏。通过充分挖掘JavaScript的潜力,我们能够把许多原本只有桌面应用程序才能够实现的丰富功能(例如,鼠标拖动、右键菜单、自动完成、拼写检查、键盘快捷键等)搬到Web页面中,这些都不是问题!Windows Live Mail就是典范之作,它提供的完善功能直逼Office Outlook,甚至让用户无法感受到这是一个基于Web的应用程序,本书的第一部分:客户端代码部分会向你阐述JavaScript的方方面面。
AJAX之所以能够实现如此强大的功能,就是因为开发者广泛使用了现有的各种成熟技术,充分挖掘了它们的潜力,并把它们有机地组合到一起。
ASPNET AJAX可以相应地分为服务器端和客户端两个部分,前者包含ASPNET 20 AJAX Extensions以及ASPNET AJAX控件工具箱,后者包含微软 AJAX库。ASPNET AJAX控件工具箱是由开发爱好者支持的,微软并不提供对它的支持,在本书的第四部分会对其进行详细阐述。
本书的读者对象十分广泛对读者具有指导和参考意义。本书适用于ASPNET 20 或35的一般开发人员,以及新技术追随者,但不适合初级读者。
本书在翻译过程中得到了很多朋友的支持和帮助,再次特别感谢你们。她们是:振雅丹、施丽鹃。
由于本书的翻译进度要求高,涉及技术面广,翻译难度较大,加之译者水平有限,书中难免有疏漏或错误,欢迎广大读者批评指正。
罗江华
2009年5月于成都
译者序
对本书的赞誉
序言
前言
致谢
第一部分客户端代码
第1章JavaScript编程
11常规的JavaScript
111JavaScript介绍
112语言特性
113简单数据类型
12string
121对象
122变量和函数参数
123错误处理
124使用超时和间隔延迟
代码执行
13面向对象JavaScript编程
131抽象数据类型
132继承
14小结
第2章微软AJAX库编程
21扩展内置的JavaScript类型
211布尔类型
212日期类型和数据类型
213字符串类型
214数组类型
22扩展微软 AJAX库
221类
222接口
223枚举
224继承和接口实现
23重要的新类型
231SysEventHandlerList
232SysStringBuilder
233SysDebug
234SysUIDomElement
235SysUIDomEvent
24维护范围
241委托
242回调
25小结
第二部分控件
第3章组件
31组件定义
32SysComponent
321定义新组件
322创建组件
323封装组件
33控件
331新概念
332定义一个新控件
333创建一个控件
334封装控件
34behavior
341定义一个behavior
342创建一个behavior
343封装behavior
35小结
第4章SysApplication
41背景资料
411创建SysApplication
412类型信息
413方法信息
42组件管理
421添加组件
422查找组件
423删除组件
424返回组件
43初始化流程
431组件创建过程
432Load事件
44unload流程
45小结
第5章为服务器控件添加
客户端能力
51脚本生成体系结构
511behavior和控件的脚本生成
512Script资源
513ScriptManager
52使用ExtenderControl添加客户端
behavior
521ExtenderControl概述
522创建一个Extender控件
53使用ScriptControl添加
客户端功能
531ScriptControl概述
532创建ScriptControl
54使用IScriptControl接口添加客户端
功能到复合控件中
541复合控件概述
542IScriptControl 接口
543创建复合控件
55小结
第6章ASPNET AJAX本地化
61ASPNET中的本地化
611决定需要本地化的内容
612在特定文化背景下运行程序
613本地化所显示的值
62ASPNET AJAX本地化
621JavaScript本地化功能
622ASPNET AJAX本地化
功能
63小结
第7章在局部回传环境中进行
控件开发
71UpdatePanel行为
72局部回传在客户端组件的效果
721behavior和控件的自动释放
722组件的自动释放
723组件、控件或behavior的
手动释放
73JavaScript语句和文件的加载
731ScriptManager Registration
方法
732SysApplicationnotify
ScriptLoaded()
74SysApplication 事件
741Init事件
742Load事件
75小结
第三部分通信
第8章ASPNET AJAX 通信架构
81新的信道通信范例
82ASPNET AJAX 20扩展
通信架构
821Web服务
822网页方法
823串行化
824服务器框架组件
83微软AJAX库通信架构
831服务代理
832串行化
833Web请求
834Web请求核心
84小结
第9章应用程序服务
91ASPNET 20的Membership、Role
和User Profile服务
911Forms认证
912ASPNET 20 Provider模型
913网站管理工具
914成员资格
915角色
916配置
92ASPNET AJAX应用服务
921认证服务
922角色服务
923配置服务
93自定义应用服务
931HTTP Handler Factory和
支持类
932服务代理
933配置
94小结
第四部分AJAX控件工具箱
第10章ASPNET AJAX 控件
工具箱架构
101工具箱概要
1011基于属性简化开发
1012丰富的NET类
1013丰富的JavaScript类
1014支持动态化
102工具箱的构成
1021安装
1022解决方案的结构
103基于服务端架构
1031属性
1032扩展和脚本控件的基类
1033设计类
104基于客户端的架构
1041BehaviorBase类
1042ControlBase类
105Animations
1051animation结构和类型
1052客户端架构
106小结
第11章使用ASPNET AJAX工具
箱给服务器控件添加客户端
功能
111使用ExntenderControlBase添加
客户端行为
1111Visual Studio 2008 扩展控件
模板库
1112继承自ExtenderControl
Base类
1113创建AjaxControlToolkit
BehaviorBase类
1114向控件添加extender
1115最后的思考
112添加设计时支持到你的Extender
控件上
1121默认的设计时体验
1122给属性添加设计器和
编辑器
113给extender控件添加animation
1131使用JavaScript API的
animation
1132使用声明式方法的
animation
114小结
第五部分附录
附录AVisual Studio 2008中的
JavaScript
附录B验证方法参数
附录CASPNET handlers和
modules
附录D客户端错误处理代码