先下载.net framework2.0和ASPAJAXExtSetup.msi
然后安装 即可运行
如果需要开发AJAX
则要安装VS和AjaxControlToolkit
在VS工具箱中新建标签 ....
.Net Framework 3.5 环境下请阅读 v3.5 环境下如何布置 AJAX 环境。
这里所说的环境是指按服务器端实现方式进行的配置。应该说只要安装了 ASP.NET AJAX Extensions 就可以实现一点 Ajax 了,但是要想利用 AJAX 的更多控件,我们一般都还下载了 ASP.NET AJAX Control Toolkit。
首先,我们应该配置ASP.NET AJAX 运行与开发环境。
然后,到 ASP.NET AJAX 官方网站下载 ASP.NET 2.0 AJAX Extensions 1.0 (本地下载)和 ASP.NET AJAX Control Toolkit,这两个文件都不大,总共也只有几兆。
安装 ASP.NET 2.0 AJAX Extensions 1.0,再安装 ASP.NET AJAX Control Toolkit。ASP.NET 2.0 AJAX Extensions 1.0 安装很简单就不介绍了,关于 ASP.NET AJAX Control Toolkit 的安装请参见安装 AJAX Control Toolkit。
配置ASP.NET AJAX。
说明
◆若只作运行环境不作开发环境,可以不安 ASP.NET AJAX Control Toolkit。
◆配置完成后可能需要重新启动 IIS。
1>安装Ajax ASPAJAXExtSetup.msi (在https://ajax.asp.net下载)
2>安装Ajax模板 ASPAJAXSamples.msi
3>下载 最新版本 ajaxcontroltoolkit
​​​https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=AtlasControlToolkit​​​4>解压到C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\AjaxControlToolkit
5>打开解决方案\AjaxControlToolkit\AjaxControlToolkit.sln,生成工程TemplateVSI
6>复制\AjaxControlToolkit\SampleWebSite\Bin\AjaxControlToolkit.dll和\AjaxControlToolkit\SampleWebSite\Bin\AjaxControlToolkit.dll
到 \AjaxControlToolkit\Binaries\
7>运行\AjaxControlToolkit\TemplateVSI\bin\AjaxControlExtender.vsi 安装模板(选择C#),仅Web
8>工具箱点右键添加选项卡AJAX Toolkit,在AJAX Toolkit选项卡里右键选择项,在弹出的对话窗口里面选择.NET Framework
点浏览 C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\AjaxControlToolkit\Binaries\AjaxControlToolkit.dll
9>在线预览效果 AjaxControlToolkit 最新版本 ajaxcontroltoolkit
https://asp.net/ajax/ajaxcontroltoolkit/samples/
配置ASP.NET AJAX完成

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所示。

下面让我们打开并按照如下步骤编辑位于Web Site根目录下的Web.Config文件。2.配置Web.Config文件

Web.Config是一个XML文件,其中的根元素是<configuration>。在<configuration>根元素中添加一个<configSections>子元素,并在其中定义一些嵌套的<sectionGroup>:

<configSections>
<sectionGroup name="system.web.extensions"
type="System.Web.Configuration.SystemWebExtensionsSectionGroup,
System.Web.Extensions, Versinotallow=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"> <sectionGroup name="scripting"
type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions,
Versinotallow=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"><sectionGroup name="webServices"
type="System.Web.Configuration.ScriptingWebServicesSectionGroup,
System.Web.Extensions, Versinotallow=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, Versinotallow=1.0.61025.0, Culture=neutral,

PublicKeyToken=31bf3856ad364e35" requirePermissinotallow="false"

allowDefinitinotallow="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, Versinotallow=1.0.61025.0, Culture=neutral,

PublicKeyToken=31bf3856ad364e35" requirePermissinotallow="false"

allowDefinitinotallow="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, Versinotallow=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/> <add name="DataRowConverter"
type="Microsoft.Web.Preview.Script.Serialization.Converters.DataRowConverter,
Microsoft.Web.Preview, Versinotallow=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/> <add name="DataTableConverter"
type="Microsoft.Web.Preview.Script.Serialization.Converters.DataTableConverter,
Microsoft.Web.Preview, Versinotallow=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, Versinotallow=1.0.61025.0, Culture=neutral,

PublicKeyToken=31bf3856ad364e35" requirePermissinotallow="false"

allowDefinitinotallow="MachineToApplication"/>

并在<webServices>中添加这一段的定义,用来允许在客户端访问户身份认证服务(其中requireSSL属性可以根据需要设置):

<authenticationService enabled="true" requireSSL ="truefalse"/>

若ASP.NET AJAX应用程序中需要在客户端访问ASP.NET所提供的用户个性化信息服务,则应该在<sectionGroup name="webServices">中定义这样一个<section>:

<section name="profileService"

type="System.Web.Configuration.ScriptingProfileServiceSection,

System.Web.Extensions, Versinotallow=1.0.61025.0, Culture=neutral,

PublicKeyToken=31bf3856ad364e35" requirePermissinotallow="false"

allowDefinitinotallow="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, Versinotallow=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,

Versinotallow=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/><add verb="*" path="*_AppService.axd" validate="false"

type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions,

Versinotallow=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/><add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions,

Versinotallow=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,

Versinotallow=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, Versinotallow=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,

Versinotallow=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

</modules>

<handlers>

    <remove name="WebServiceHandlerFactory-Integrated"/>

    <add name="ScriptHandlerFactory" verb="*" path="*.asmx"

preCnotallow="integratedMode"

type="System.Web.Script.Services.ScriptHandlerFactory,

System.Web.Extensions, Versinotallow=1.0.61025.0, Culture=neutral,

PublicKeyToken=31bf3856ad364e35"/>    <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd"

preCnotallow="integratedMode" type="System.Web.Script.Services.

ScriptHandlerFactory, System.Web.Extensions, Versinotallow=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, Versinotallow=1.0.61025.0, Culture=neutral,

PublicKeyToken=31bf3856ad364e35"/>    <add name="ASBXHandler" verb="GET,HEAD,POST" path="*.asbx"

preCnotallow="integratedMode" type="System.Web.Script.Services.

ScriptHandlerFactory,System.Web.Extensions, Versinotallow=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所示。

在弹出的对话框中点击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中可以看到ASP.NET AJAX提供的所有服务器端控件,在接下来的4章中,将详细介绍这些控件的使用方法以及它们的应用范围。