【导读】假如你在你的 web 应用中编写了自定义的客户端javascript脚本,而且将使用ajax的话,需要了解如何避免文中提到的这个常见的疑难杂症。
开发人员遇上了一些古怪的javascript问题,这些问题会在使用asp.net ajax 以及他们的一些自定义的javascript脚本时出现。
问题的主因在于,他们是把vs 2003 web项目自动移植到vs 2005的,在他们的web.config文件中还配置有 。
假如你在你的 web 应用中编写了自定义的客户端javascript脚本,而且将使用ajax的话,请读下去,了解如何避免这个常见的疑难杂症。
症状:
当你往先前成功地从vs 2003 升级到vs 2005的项目中添加新的客户端javascript脚本时,你会看到奇怪的行为。在使用asp.net ajax updatepanel 控件时,这个奇怪的行为有时会包括页面做整页 postback,而不仅是递增性的局部更新的情形。
当你打开你的web.config文件,你会看到其中的 元素,象这样:
背景:
asp.net 1.0 和 1.1 中的许多服务器端控件并不输出与xhtml兼容的标识。asp.net 2.0 对此做了改变,在默认情形下,所有的服务器端控件都会输出与xhtml兼容的标识 。
但在早期的asp.net 2.0 beta 中我们注意到的一件事情是,当把客户应用升级时,其实,很多应用会假设页面输出并不是与xhtml兼容的。把我们服务器控件的默认输出改成与xhtml兼容的话,它有时会修改页面的视觉显示。为向后兼容的目的,我们添加了上面这个 设置,允许开发人员可以设置控件以legacy模式(即与asp.net 1.1一样,会输出非xhtml标识),或者transitional 模式 (xhtml transitional) ,或者 strict 模式 (xhtml strict)显示。
在默认情形下,当你使用vs 2003升级到vs 2005的web项目移植向导时(无论是网站或 web 应用项目),你的web.config文件里会添有这个legacy配置。
解决方案:
除非你已知当你的网站以xhtml模式运行时会有问题(但你还没时间更正),我总是建议从你的web.config文件里去掉 这部分,或者你也可以明确地将其设置为transitional 或 strict。
这将使得你的html输出是符合标准的,此外,这也将导致你的服务器控件的html输出是well formed,即, 开始标签和结束标签总是相匹配的。当你使用ajax技术来动态替换你的页面上某些html元素的内容时,这尤其重要,否则的话,客户端javascript脚本有时会搞不清楚容器元素,导致出错。它也将确保asp.net ajax会在你的网站上正常工作。
新闻热点
疑难解答
图片精选