Asp.net Ajax的start和web.config配置
下载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),如下图所示:
当你新建了一个"ASP.NET AJAX-Enabled Web Site"之后,你会发现在你的"Solution Explorer"中除了普通Web项目具有的"APP_Data"目录和"Default.aspx"文件之外多了一个Web.config文件,这个文件包含了建立AJAX网站需要的绝大大多数设置,打开这个文件你会看到这样的代码:
<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里面有什么新的东西:
<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文件:
希望有高人能解答我的这个疑问,谢先~
添加AJAX Control Toolkit控件到Toolbox。首先在Toolbox里面新建一个Tab,然后通过Choose Items对话框选择:你的AJAXControlToolkit解压缩目录\SampleWebSite\Bin\AjaxControlToolkit.dll 完成后你的Toolbox就应该是这个样子了:
好啦,该添加的组件都已经添加好了,在微软的帮助文档中就该说把这些控件拖拽到页面设计器里开始快乐的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 网络应用的准备工作就算是告一段落了,下一次我们就可以用实例来看看如何使用这些控件来开发了。
加油,哥们,现在开始!