请联机到微软ASP.NET AJAX官方网站http://ajax.asp.net,点击“Download ASP.NET AJAX 1.0”超链接进行ASP.NET AJAX安装套件下载
第二步:下载AjaxControlToolkit.zip 下载地址:http://www.asp.net/ajax/downloads/
第三步:将AjaxControlToolkit.zip解压到C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025的位置,运行AjaxControlToolkit.sln,将项目
第四步:复制C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025\AjaxControlToolkit\bin\Debug文件夹下的AjaxControlToolkit.dll文件到C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025\Binaries文件夹下
第五步:C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025\AjaxControlExtender进行安装组件
以上步骤是安装的过程 。下面是使用的方法:
第一步:打开VS工具,找到工具箱
2.3 安装ASP.NET AJAX
前面讲了这么多也许令人昏昏欲睡的概念,相信你已经迫不及待地想尝试一下ASP.NET AJAX了,那么就让我们从安装开始吧!
2.3.1 预先需求
若要安装并使用ASP.NET AJAX框架的全部功能进行开发,那么你的操作系统必须是Windows 2000、Windows XP、Windows Server 2003或Windows Vista,并应该安装好如下软件:
Microsoft .NET Framework Version 2.0或以上;
至少一种流行的浏览器:IE 5.01(推荐使用IE 6.0)或FireFox 1.5;
Visual Studio 2005(各种版本均可)或者Visual Web Developer Express Edition;
Internet Information Service(IIS)。
需要特别注意的是,虽然在Windows 2000操作系统上也能正常安装ASP.NET AJAX框架,但在程序开发或运行时可能会出现一些难以预料的异常。所以若没有特殊需要的话,强烈建议不要使用Windows 2000。
当然,作为使用ASP.NET AJAX程序的客户端,即程序的用户,并不需要任何的附加安装,只要一种流行的浏览器即可。
2.3.2 几个不同的安装文件
在上述软件安装完毕之后,我们即可到http://ajax.asp.net/下载最新的ASP.NET AJAX安装文件了。在http://ajax.asp.net/的下载页面中,我们可以看到ASP.NET AJAX分成了如下两个单独的下载安装文件。
ASP.NET 2.0 AJAX Extensions:包含了原有CTP版本中的最重要和最基本的一些控件、组件和功能,例如服务器端的ScriptManager控件、UpdatePanel控件,客户端的JavaScript面向对象方面扩展、调试类、Web Service代理等。对于这一部分内容,微软公司将提供完善的技术支持,并提供如MSDN一般详细的开发文档(可在http://ajax.asp. net/docs/访问)等。若要安装ASP.NET AJAX,这个核心部分自然是必不可少的。
ASP.NET AJAX Futures CTP:这一部分就是被ASP.NET AJAX暂时“抛弃”的原有CTP版本中“非核心”的部分,也叫做“Value-add”包,其中包括服务器端的扩展器控件(Extender Control)、Web部件,客户端的各种控件、拖放功能实现、ASP.NET AJAX XML脚本等。所谓“抛弃”,实际上只是意味着微软公司暂时不会对这些内容进行官方的支持,而选择使用“社区支持”的方法。这样,微软公司将不会为这部分内容提供详细的开发文档,开发者只能在社区中互相讨论以找到问题的解决方案。若要安装这部分内容,则必须首先安装“核心”部分的ASP.NET 2.0 AJAX Extensions。
由于ASP.NET AJAX是个非常庞大的项目,微软公司尚没有足够的时间完成对整个产品的支持,所以才将其暂时分成了两个相对独立的下载安装文件。不过事实上,Futures包中包含的内容在开发中的重要性一点也不逊于核心部分,二者都是开发一个完善的Ajax应用程序所不可缺少的部分。在未来的一段时间之内,微软公司也将逐渐地把Futures中的内容转移到核心部分的ASP.NET 2.0 AJAX Extensions中,并提供包括开发文档在内的完善的技术支持。
为了区分两个安装包中的组件,微软公司修改了“Futures”包中组件的命名空间:服务器端命名空间由Microsoft.Web.*修改为Microsoft.Web.Preview.*;客户端命名空间由Sys.*修改为Sys.Preview.*。可以看到,位于“Futures”包中的组件,无论服务器端还是客户端均加上了Preview前缀,表示该部分内容处于“预览”状态中,尚未得到官方的正式支持。
因为合并以上二者是或早或晚的事情,所以本书将不会对其加以任何区分,而是一视同仁地进行介绍。这样,作为读者的你在阅读本书以及运行本书所附代码的过程中,也要确保正确安装了这两个安装包。
在http://ajax.asp.net/的下载页面中,我们还可以看到如下的几个下载文件:
Microsoft AJAX Library:这个下载包中包含了ASP.NET AJAX的客户端JavaScript文件,若你需要在ASP.NET 1.1或者PHP等非ASP.NET 2.0服务器端实现中使用ASP.NET AJAX的客户端部分,那么则需要下载这个文件包,并手工将其中的JavaScript脚本文件引入到页面中。这些JavaScript文件中包含了ASP.NET AJAX所有的客户端功能,包括XML脚本声明、客户端组件、绑定、行为、动作等。前面介绍的ASP.NET AJAX的“核心”和“Futures”安装包中已经包含了该Microsoft AJAX Library的全部内容,若你的服务器端开发平台为ASP.NET 2.0,则直接安装上述两个安装包即可,无需另行下载这个Microsoft AJAX Library。
Sample Applications:该下载包为ASP.NET AJAX的示例程序安装包,通过阅读其源代码并随即看到页面运行时的实际效果,我们可以更加感性地快速了解ASP.NET AJAX各个特性的使用方法。建议所有的读者都能够下载安装这个示例程序,并仔细分析研究其中各种功能的实现。
ASP.NET 2.0 AJAX Extensions Source Code:该内容为“核心”部分ASP.NET 2.0 AJAX Extensions的所有服务器端源代码以及用于调试的pdb文件,基于Microsoft Reference License (Ms-RL)许可协议发布。若你希望能够跟踪调试ASP.NET AJAX的实现代码,或者学习ASP.NET AJAX的实现方式,那么显然应该下载并参考这部分内容。
ASP.NET AJAX Control Toolkit:ASP.NET AJAX Control Toolkit是一个免费的、开源的、由微软公司和开发者社区共同创建的ASP.NET服务器端控件包,其中包含了数十种基于ASP.NET AJAX的、组件化的、提供某个专一Ajax功能的ASP.NET AJAX服务器端控件和ASP.NET AJAX扩展器控件,这些控件同样是创建一个完善的Ajax应用程序所必不可少的。关于ASP.NET AJAX Control Toolkit以及其中控件的使用方法,将在第7、8、9、10章中详细介绍。
ASP.NET AJAX July CTP和ASP.NET AJAX July CTP Documentation:对于那些已经使用ASP.NET AJAX CTP版本开发过半的开发人员来说,现在就让他们立即大动干戈地从CTP版本升级为最新版似乎有些不近人情。微软公司在这里仍旧保留了2006年7月份ASP.NET AJAX的CTP以及其开发文档的下载,有需要的朋友可以将其作为参考。
2.3.3 安装ASP.NET AJAX
ASP.NET AJAX的两个安装文件(“核心”部分和“Futures”部分)均很小,每个只有1MB多,所以下载的过程并不需要花费太多的时间。和普通的安装文件一样,我们只需要双击运行,然后跟随着安装向导即可完成安装。由于“Futures”部分基于“核心”部分,所以我们应该首先安装“核心”部分。安装“核心”部分ASP.NET 2.0 AJAX Extensions时的界面如图2-3所示。
图2-3 安装核心部分ASP.NET 2.0 AJAX Extensions时的界面
安装完成之后,“核心”部分ASP.NET 2.0 AJAX Extensions的程序集System.Web.Extensions.dll将注册至本机的GAC(Global Assembly Cache,全局程序集缓存)中。在.NET Framework 2.0 Configuration中查看GAC(开始 | 控制面板 | 管理工具 | Microsoft .NET Framework 2.0 Configuration),如果一切顺利的话,你将可以从中找到System.Web.Extensions这个条目,如图2-4所示。
图2-4 System.Web.Extensions.dll注册至本机的GAC中
核心部分ASP.NET 2.0 AJAX Extensions安装完成之后,接下来安装ASP.NET AJAX CTP,即“Futures”部分。安装“Futures”部分ASP.NET 2.0 AJAX Extensions时的界面如图2-5所示。
图2-5 安装“Futures”部分ASP.NET 2.0 AJAX Extensions时的界面
“Futures”部分ASP.NET 2.0 AJAX Extensions程序集Microsoft.Web.Preview.dll不会注册至GAC中,所以若我们在项目中需要使用其中的功能,则需要手工为其添加引用。
完成安装之后,我们导航至安装目录(按照默认路径,为C:"Program Files"Microsoft ASP.NET" ASP.NET 2.0 AJAX Extensions"v1.0.61025以及C:"Program Files"Microsoft ASP.NET" ASP.NET 2.0 AJAX Futures January CTP" v.1.0.61025),找到并阅读EULA.rtf和EULA_CTP.rtf两个许可文件。知识产权受到各国法律的保护,尊重知识产权也是每个人应尽的义务,请详细阅读并确认理解其中条款后再进行后续开发。
如果一切顺利的话,那么恭喜了!你可以立刻开始创建第一个ASP.NET AJAX应用程序了。
2.3.4 常见问题以及解决方案
不过事情却不总是如此顺利的,正所谓好事多磨。ASP.NET AJAX(包括从前的CTP版本)在安装时经常会出现一些问题,其中一个非常常见的错误是提示安装文件有问题并无法继续安装,图2-6显示了在CTP版本中这个错误的截图。
图2-6 ASP.NET AJAX安装中常见的“安装文件损坏”错误
如果很不巧地遇到了这个错误,那么可以尝试使用下面的步骤来修复:
(1) 清除浏览器的离线缓存文件;
(2) 重新下载ASP.NET AJAX的两个安装文件,注意不要直接在原位置打开并运行,而是首先保存在本地后再运行;
(3) 完全删除旧版本的ASP.NET AJAX CTP(如果有的话,包括核心部分以及Futures部分),并清理注册表,删除一切有关ASP.NET AJAX的键;
(4) 尝试再次安装。
若仍出现这个问题,那么最后的办法就是到其他的计算机上安装好,并将该计算机的安装目录(按照默认路径,为C:"Program Files"Microsoft ASP.NET"ASP.NET 2.0 AJAX Extensions"以及C:"Program Files"Microsoft ASP.NET" ASP.NET 2.0 AJAX Futures January CTP")中的文件以及子目录,包括核心部分的System.Web.Extensions.dll、Futures部分的Microsoft.Web.Preview.dll等拷贝到本机中。接下来在我们的ASP.NET 2.0应用程序中引用这些程序集之后,即可同样开始使用ASP.NET AJAX。
另外,在安装完成之后,我们建议清空浏览器缓存并重新启动IIS,以避免可能出现的一些由缓存导致的脚本文件以及程序集不一致问题。关于重新启动IIS,这里有一个小技巧——无需麻烦地打开IIS管理器,只要在命令行提示符中输入iisreset命令即可。
需要特别注意的是,核心部分ASP.NET 2.0 AJAX Extensions的程序集System.Web. Extensions.dll需要运行于Full Trust信任等级下,而为了安全起见,虚拟主机提供商一般均会将Web站点的信任等级设置为Medium Trust。这样若是在Web站点部署时直接将System.Web.Extensions.dll拷贝到Web站点的bin"目录下,那么ASP.NET AJAX将无法正常运行。因此,我们就必须说服虚拟主机提供商将System.Web.Extensions.dll添加到服务器的GAC中,以期得到Full Trust信任等级,让我们的ASP.NET AJAX Web站点能够正确运行。
2.4 配置ASP.NET AJAX
在ASP.NET 2.0中使用ASP.NET AJAX所提供的功能之前,需要对其进行必要的配置。ASP.NET AJAX的配置可分为两种情况:一种是从头开始,创建新的应用ASP.NET AJAX的应用程序;另一种是在现有的ASP.NET 2.0应用程序中使用ASP.NET AJAX进行扩展。对于前一种情况,我们可以使用ASP.NET AJAX安装中自带的Visual Studio项目模板,帮助我们自动配置好其所需要的相关设定;而对于后一种情况,则只能手动进行其配置。
接下来将分别讨论这两种情况下ASP.NET AJAX的配置方法。
2.4.1 在现有的ASP.NET程序上应用ASP.NET AJAX
对于现有的基于ASP.NET 2.0的Web应用程序,我们需要手动配置ASP.NET AJAX的相关设定。
注意,若你正打算从零开始学习ASP.NET AJAX,那么完全不必要纠缠于这节将要介绍的种种设定的细节中。你可以暂时跳过这节内容,从下一节“新建ASP.NET AJAX应用程序”开始阅读。
1.添加必要程序集的引用
首先在解决方案中添加启用ASP.NET AJAX所必需的Microsoft.Web.Extensions.dll和System.Web.Preview.dll两个程序集的引用,这两个程序集分别随ASP.NET AJAX的“核心”部分和“Futures”部分的安装部署到了本机。注意,若本机和远程服务器均安装了ASP.NET AJAX的核心部分,则System.Web.Extensions.dll程序集就已经添加至了各自的GAC中,在接下来的步骤中就不必再添加该程序集的引用。
在Visual Studio中打开这个现有的ASP.NET 2.0的Web应用程序。若在Solution Explorer中没有"Bin文件夹,则首先在Web Site上单击右键,并在弹出的上下文菜单中选择Add ASP.NET Folder,然后在展开的菜单中选择Bin,即可添加Bin文件夹(见图2-7)。
接着在刚刚添加的"Bin文件夹上再次单击右键,并在弹出菜单中选择Add Reference…。在弹出的对话框中切换至Browse选项卡,并导航到System.Web.Extensions. dll和Microsoft.Web.Preview.dll这两个程序集所在的位置(按照默认路径,这两个文件一般位于C:"Program Files"Microsoft ASP.NET"ASP.NET 2.0 AJAX Extensions" v.1.0.61025"和C:"Program Files"Microsoft ASP.NET" ASP. NET 2.0 AJAX Futures January CTP" v.1.0.61025中)。选择这两个文件,如图2-8所示。然后点击OK按钮以确认添加引用。
更简单的方法是直接将Microsoft.Web.Extensions.dll和Microsoft.Web.Preview.dll拷贝到"Bin文件夹中,然后刷新Solution Explorer。如果一切正确的话,之后将会在Solution Explorer中看到添加好的这两个程序集,如图2-9所示。
图2-8 在Bin文件夹内添加System.Web. Extensions.dll程序集的引用 |
图2-9 添加了System.Web.Extensions.dll和Microsoft. Web.Preview.dll引用后的Solution Explorer |
2.配置Web.Config文件
下面让我们打开并按照如下步骤编辑位于Web Site根目录下的Web.Config文件。
Web.Config是一个XML文件,其中的根元素是<configuration>。在<configuration>根元素中添加一个<configSections>子元素,并在其中定义一些嵌套的<sectionGroup>:
<configSections>
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
...
...
</sectionGroup>
</sectionGroup>
</sectionGroup>
</configSections>
然后在<configuration>根元素中定义<System.web.extensions>子元素,并在其中定义相应的与上面<sectionGroup>相呼应的层次结构,如下所示:
<system.web.extensions>
<scripting>
<webServices>
...
...
</webServices>
</scripting>
</system.web.extensions>
若你希望ASP.NET AJAX应用程序在运行时能够对客户端脚本文件进行压缩或缓存,则应该在<sectionGroup name="scripting">中定义一个新的<section>:
<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
然后在<scripting>中添加这部分启用脚本资源压缩以及缓存的配置声明:
<scriptResourceHandler enableCompression="true" enableCaching="true" />
这段声明将在程序运行于Release模式时压缩客户端脚本库的大小。如果不是程序中有非常特殊的需要,我们绝对应该添加这个HTTP模块以提高网络传输速度。
若ASP.NET AJAX应用程序中需要自定义的JSON转换方式,则应该在<sectionGroup name="webServices">的最内层中定义相应的<section>,例如:
<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere"/>
并在<webServices>中添加自定义的转换器声明。例如,下列转换器即可将服务器端ADO.NET中的DataSet、DataTable以及DataRow自动转换为客户端的相应对象。当然,客户端的这三种对象也可以自动转换为服务器端的相应形式(关于这部分内容,将在第Ⅱ卷中详细介绍):
<jsonSerialization maxJsonLength="500">
<converters>
<add name="DataSetConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter, Microsoft.Web.Preview, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="DataRowConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataRowConverter, Microsoft.Web.Preview, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="DataTableConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataTableConverter, Microsoft.Web.Preview, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</converters>
</jsonSerialization>
若ASP.NET AJAX应用程序中需要在客户端访问ASP.NET所提供的用户身份认证服务,则应该在<sectionGroup name="webServices">中定义这样一个<section>:
<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
并在<webServices>中添加这一段的定义,用来允许在客户端访问户身份认证服务(其中requireSSL属性可以根据需要设置):
<authenticationService enabled="true" requireSSL ="true|false"/>
若ASP.NET AJAX应用程序中需要在客户端访问ASP.NET所提供的用户个性化信息服务,则应该在<sectionGroup name="webServices">中定义这样一个<section>:
<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
并在<webServices>中添加这一段的定义,用来允许在客户端访问用户个性化信息服务。其中writeAccessProperties指定的用户个性化属性可以在客户端进行设定,read- AccessProperties指定的用户个性化属性可以在客户端进行访问:
<profileService enabled="true"
readAccessProperties=" propertyname1;propertyname2"
writeAccessProperties=" propertyname1;propertyname2" />
若想暴露出所有的用户个性化属性供客户端设定/读取,则可以在readAccess- Properties或WriteAccessProperties中使用通配符*,代码如下:
<profileService enabled="true" readAccessProperties="*" WriteAccessProperties="*" />
接下来在<configuration>根元素中的<system.web>节中注册ASP.NET AJAX服务器端控件的前缀:
<pages>
<controls>
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add tagPrefix="asp" namespace="Microsoft.Web.Preview.UI" assembly="Microsoft.Web.Preview"/>
<add tagPrefix="asp" namespace="Microsoft.Web.Preview.UI.Controls" assembly="Microsoft.Web.Preview"/>
</controls>
</pages>
接下来修改<compilation>节,允许调试和添加必要的用于调试的程序集:
<compilation debug="true">
<assemblies>
<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</assemblies>
<buildProviders>
<add extension="*.asbx" type="Microsoft.Web.Preview.Services.BridgeBuildProvider"/>
</buildProviders>
</compilation>
注意,上面代码中同样包含了<buildProviders>以及其中*.asbx文件的声明。若你的应用程序不需要服务器端远程Web Service桥,那么没有必要添加<buildProviders>中的这部分内容。
还是在<system.web>元素中,若你的ASP.NET AJAX应用程序中需要在客户端调用服务器端的Web Service,则需要对Web Service应用一些新的HTTP Handler,并为其生成必要的客户端JavaScript代理脚本。找到<system.web>元素中的<httpHandlers>子元素,移除现有的Web Service文件(.asmx)的Handler,然后添加ASP.NET AJAX引入的新的Handler(*.asbx一项同样可以根据需要有选择地添加):
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
<add verb="GET,HEAD,POST" path="*.asbx" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
</httpHandlers>
仍然是在<system.web>元素中添加如下的HTTP模块声明:
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>
最后,在<configuration>节中添加<system.webServer>小节,为Web服务器进行相应的配置(这些配置是可选的,将只应用于IIS7中):
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules>
<add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</modules>
<handlers>
<remove name="WebServiceHandlerFactory-Integrated"/>
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services. ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="ASBXHandler" verb="GET,HEAD,POST" path="*.asbx" preCondition="integratedMode" type="System.Web.Script.Services. ScriptHandlerFactory,System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,PublicKeyToken=31bf3856ad364e35"/>
</handlers>
</system.webServer>
通过上述设置过程,我们就完成了为现有的ASP.NET 2.0应用程序应用ASP.NET AJAX所需要的所有配置步骤。
可以看到ASP.NET AJAX的配置并不是那么容易,但新建的ASP.NET AJAX Web站点中的Web.config文件即包含了默认的ASP.NET AJAX配置。我们完全可以基于这个文件并按照上面的介绍,根据需要对其进行修改或补充。限于篇幅,这里就不再列出完整的代码。
2.4.2 新建ASP.NET AJAX应用程序
2.3节中安装的ASP.NET 2.0 AJAX Extensions核心部分以及Futures部分均会在Visual Studio中添加相应的Web站点模板,这样新建ASP.NET AJAX应用程序就变得非常简单了。首先,在Visual Studio的菜单中选择File | New | Web Site…,将看到如图2-10所示的New Web Site对话框。
图2-10 在Visual Studio中创建新的ASP.NET AJAX Web站点
其中ASP.NET AJAX-Enabled Web Site是ASP.NET 2.0 AJAX Extensions“核心”部分所添加的站点模板,ASP.NET AJAX CTP-Enabled Web Site则是“Futures”部分的站点模板。后者包含了前者的所有内容与功能,所以这里我们选择后者作为新建Web站点的模板。指定网站路径以及服务器端程序语言后点击OK按钮,Visual Studio将自动依照安装的模板创建出一个新的ASP.NET AJAX Web Site。创建之后,该ASP.NET AJAX Web Site在Solution Explorer中的组织结构将如图2-11所示。
图2-11 新建的ASP.NET AJAX Web Site的组织结构
从图2-11中可以看到,该Web Site的Bin目录下已经添加了对Microsoft.Web.Preview.dll(即“Futures”程序集)的引用,而核心部分的System.Web.Extensions.dll程序集在ASP.NET 2.0 AJAX Extensions安装的过程中已经添加到了GAC中,故无需再手工添加其引用。随模板自动生成的Default.aspx文件中也包含了一些ASP.NET AJAX必需的标记,例如ScriptManager的定义等。Web.config文件中同样自带了一般ASP.NET AJAX应用程序所需要的配置。当然,有时候你仍需要打开该文件并对其内容进行手动修改。
2.4.3 将“Futures”部分中的服务器端控件添加到Visual Studio的Toolbox中
Visual Studio的Toolbox上列出了常用的控件,作为开发者,只需要将上面的某个控件拖到页面设计器中,Visual Studio即可自动生成必要的声明以及初始化代码。Toolbox中的控件是分组归类的,在图2-12中,我们可以看到默认的分类包括Standard、Data、Validation等。Toolbox支持我们自定义其中放置的控件;在ASP.NET 2.0 AJAX Extensions核心部分的安装过程中,已经添加了一个新的名为AJAX Extensions的控件组,并将核心部分的几个服务器端控件添加于其中。
图2-12 Toolbox中的AJAX Extensions的控件组
为了便于今后使用,我们可以将ASP.NET 2.0 AJAX Extensions的“Futures”部分中提供的服务器端控件也添加到其中。展开AJAX Extensions控件组并在其中单击右键,并选择Choose Items…,如图2-13所示。
图2-13 在AJAX Extensions控件组中添加控件
在弹出的对话框中点击Browse…,导航至Microsoft.Web.Preview.dll所在的文件夹并选中该程序集。这样,该对话框的可选控件列表中将添加并选中Microsoft.Web.Preview.dll程序集中包含的所有控件。点击Assembly Name标题栏,按照程序集名称排序之后,该对话框将如图2-14所示。
图2-14 选择Microsoft.Web.Preview.dll程序集中包含的Futures控件
点击OK进行确认,这样“Futures”部分中的服务器端控件就添加到Toolbox中的AJAX Extensions控件组中,如图2-15所示。
图2-15 添加了Futures控件的AJAX Extensions控件组
从图2-15中可以看到ASP.NET AJAX提供的所有服务器端控件,在接下来的4章中,将详细介绍这些控件的使用方法以及它们的应用范围。