Asp.net Ajax的start和web.config配置

微软于2006年11月9日发布了ASP.NET AJAX 1.0 Beta 2 从最初的 Atlas 到 ASP.NET AJAX 1.0 Beta 1 再到 Beta 2 ,这一个基于.NET 的 AJAX 框架已经趋于完整,越来越多的.NET开发者也开始使用这套框架所提供的强大功能建立自己的AJAX应用,在从使用Atlas到ASP.NET AJAX 1.0 Beta 2 的过程中,我也遇到了这样或者那样的问题,通过ASP.NET Forums从国外的开发者那里学到了很多,不敢独享,决定整理出来供新手参考,水平有限,欢迎指正!更欢迎通过MSN:vagrantdog@hotmail.com 联系我一起研究这套框架:)
要使用ASP.NET AJAX 进行开发,首先需要做一些准备工作(由于我使用的是VS2005英文版,下文中有些地方没有使用中文版的名称,希望不会影响阅读,见谅):

下载ASP.NET AJAX 1.0 Beta 2。你可以从 这儿 下载到最近的安装包,也可以访问 http://ajax.asp.net/ 查看更多的信息。下载的文件是一个.msi安装包,直接安装即可。

下载ASP.NET 2.0 AJAX Futures November CTP (可选),下载地址,是否需要下载并安装这个文件取决于你这之前有没有用过AutoCompleteExtender控件或其他“Atlas” CTP 特性,这份文档也许可以帮助你做出判断。

下载AJAX Control Toolkit,下载地址,这是一套可以大大提升开发效率的控件包,下载文件是一个.zip的压缩包,解压后你会发现这就是一个完整的AjaxControlToolkit解决方案,包括了AjaxControlToolkit所有空间的源代码(位于\AjaxControlToolkit\目录下),还有一个文件夹SampleWebSite包含了使用这些控件的若干实例,将其映射为IIS的一个虚拟目录后就能访问,其内容和AJAX Control Toolkit官方网站是一样的,在开始建立你的第一个AJAX-Enabled应用之前强烈建议阅读其中的Walkthroughs部分。

配置VS2005/VWD

在安装了ASP.NET AJAX 1.0 Beta 2之后,你就能从VS2005/VWD的"File"->"New"->"Web Site"对话框中看到出现了新的模版:"ASP.NET AJAX-Enabled Web Site"和"ASP.NET AJAX CTP-Enabled Web Site"(如果你安装了前面提到的ASP.NET 2.0 AJAX Futures November CTP),如下图所示:New Web Sites

 当你新建了一个"ASP.NET AJAX-Enabled Web Site"之后,你会发现在你的"Solution Explorer"中除了普通Web项目具有的"APP_Data"目录和"Default.aspx"文件之外多了一个Web.config文件,这个文件包含了建立AJAX网站需要的绝大大多数设置,打开这个文件你会看到这样的代码:

 

  <system.web>
    
<pages>
      
<controls>
        
<add tagPrefix="asp" namespace="Microsoft.Web.UI" assembly="Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        
<add tagPrefix="asp" namespace="Microsoft.Web.UI.Controls" assembly="Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      
</controls>
      
<tagMapping>
        
<add tagType="System.Web.UI.WebControls.CompareValidator" 
mappedTagType
="Microsoft.Web.UI.Compatibility.CompareValidator, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        
<add tagType="System.Web.UI.WebControls.CustomValidator" 
mappedTagType
="Microsoft.Web.UI.Compatibility.CustomValidator, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        
<add tagType="System.Web.UI.WebControls.RangeValidator" 
mappedTagType
="Microsoft.Web.UI.Compatibility.RangeValidator, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        
<add tagType="System.Web.UI.WebControls.RegularExpressionValidator" 
mappedTagType
="Microsoft.Web.UI.Compatibility.RegularExpressionValidator, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        
<add tagType="System.Web.UI.WebControls.RequiredFieldValidator" 
mappedTagType
="Microsoft.Web.UI.Compatibility.RequiredFieldValidator, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        
<add tagType="System.Web.UI.WebControls.ValidationSummary" 
mappedTagType
="Microsoft.Web.UI.Compatibility.ValidationSummary, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      
</tagMapping>
......

 

这是VS2005产生的默认设置,其中有个小地方如果不修改的话会给后面的代码编写带来不大不小的麻烦,下文会详细说明。

再来看看Toolbox里面有什么新的东西:

Toolbox

比较明显的是多出来了一个"AJAX Extensions"的Tab,这里面包含的ScriptManager、UpdatePanel、UpdateProgress和ScriptManagerProxy就是进行AJAX开发最基本的空间了,以后我会详细介绍它们的用法。难道ASP.NET AJAX就这么点东西吗?如果你进入ASP.NET AJAX的安装目录(默认为C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025\)的话,你还能找到Microsoft.Web.Extensions.dll,在刚才的Web.config文件中也注册了这个文件:
      <assemblies>
        
<add assembly="Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      
</assemblies>

那么这个文件还为我们带来什么了呢?可以在Toolbox中右键选择"Choose Items"把这个文件导入,然后我们就看到"AJAX Extensions"中多出了几个控件:

这些Validator空间和Toolbox中原有的Validation控件有什么区别呢,呃,这个,我现在也不知道,从Choose Items对话框中可以看到它们来自不同的Dll文件:Validators

希望有高人能解答我的这个疑问,谢先~

添加AJAX Control Toolkit控件到Toolbox。首先在Toolbox里面新建一个Tab,然后通过Choose Items对话框选择:你的AJAXControlToolkit解压缩目录\SampleWebSite\Bin\AjaxControlToolkit.dll 完成后你的Toolbox就应该是这个样子了:

AjaxControlToolkit

好啦,该添加的组件都已经添加好了,在微软的帮助文档中就该说把这些控件拖拽到页面设计器里开始快乐的AJAX之旅了,但是如果你想使用MasterPage的话,现在就开始编码会给你带来一些很郁闷的意外(至少让我郁闷了好些天),具体的情况可以看看Scott Guthrie's 的一篇文章:疑难杂症:ASP.NET AJAX 控件中HTML Intellisense功能的丢失 原文地址,感谢Scott Guthrie's !为了避免这样的问题,我们需要把Web.config上面提到的地方修改如下:

......
      
<controls>
        
<add tagPrefix="AJAX" namespace="Microsoft.Web.UI" 
assembly
="Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        
<add tagPrefix="AJAX" namespace="Microsoft.Web.UI.Controls" 
assembly
="Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      
</controls>
......

另外,为了避免刚才提到的Validation组件的问题,把<tagMapping>块注释掉,在<controls>块中添加:

        <add tagPrefix="AJAX" namespace="Microsoft.Web.UI.Compatibility" 
assembly
="Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

完成修改后的Web.config文件大致是这个样子的:

......
  
<system.web>
    
<pages>
      
<controls>
        
<add tagPrefix="AJAX" namespace="Microsoft.Web.UI" 
assembly
="Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        
<add tagPrefix="AJAX" namespace="Microsoft.Web.UI.Controls" 
assembly
="Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        
<add tagPrefix="AJAX" namespace="Microsoft.Web.UI.Compatibility" 
assembly
="Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      
</controls>
      
<!--<tagMapping>
        <add tagType="System.Web.UI.WebControls.CompareValidator" 
mappedTagType="Microsoft.Web.UI.Compatibility.CompareValidator, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        <add tagType="System.Web.UI.WebControls.CustomValidator" 
mappedTagType="Microsoft.Web.UI.Compatibility.CustomValidator, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        <add tagType="System.Web.UI.WebControls.RangeValidator" 
mappedTagType="Microsoft.Web.UI.Compatibility.RangeValidator, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        <add tagType="System.Web.UI.WebControls.RegularExpressionValidator" 
mappedTagType="Microsoft.Web.UI.Compatibility.RegularExpressionValidator, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        <add tagType="System.Web.UI.WebControls.RequiredFieldValidator" 
mappedTagType="Microsoft.Web.UI.Compatibility.RequiredFieldValidator, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        <add tagType="System.Web.UI.WebControls.ValidationSummary" 
mappedTagType="Microsoft.Web.UI.Compatibility.ValidationSummary, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      </tagMapping>
-->
......

在我的项目中,对Web.config这样修改后就基本上没有出现过找不到某某控件的错误了,不知道这样的解决方法是否恰当?

到这里为止,使用 ASP.NET AJAX 开发 AJAX-Enabled 网络应用的准备工作就算是告一段落了,下一次我们就可以用实例来看看如何使用这些控件来开发了。

posted @ 2007-08-01 17:52  四两  阅读(1907)  评论(1编辑  收藏  举报
加油,哥们,现在开始!