【原文地址】 Gotcha: Don't use <xhtmlConformance mode="Legacy"/> with ASP.NET AJAX
【原文发表日期】 Sunday, December 10, 2006 9:39 PM
最近,我帮过几个开发人员,他们遇上了一些古怪的JavaScript问题,这些问题会在使用ASP.NET AJAX 以及他们的一些自定义的JavaScript脚本时出现。问题的主因在于,他们是把VS 2003 Web项目自动移植到VS 2005的,在他们的web.config文件中还配置有 <xhtmlConformance mode="Legacy"/> 。
假如你在你的 web 应用中编写了自定义的客户端JavaScript脚本,而且将使用AJAX的话,请读下去,了解如何避免这个常见的疑难杂症 (注:想浏览我贴出的其他技巧,诀窍和疑难杂症的帖子列单的话,请访问这里的这个网页)。
症状:
当你往先前成功地从VS 2003 升级到VS 2005的项目中添加新的客户端JavaScript脚本时,你会看到奇怪的行为。在使用ASP.NET AJAX UpdatePanel 控件时,这个奇怪的行为有时会包括页面做整页 postback,而不仅是递增性的局部更新的情形。
当你打开你的web.config文件,你会看到其中的 <xhtmlConformance/> 元素,象这样:
<configuration>
<system.web>
<xhtmlConformancemode="Legacy"/>
</system.web>
</configuration>
背景:
ASP.NET 1.0 和 1.1 中的许多服务器端控件并不输出与XHTML兼容的标识。ASP.NET 2.0 对此做了改变,在默认情形下,所有的服务器端控件都会输出与XHTML兼容的标识 (注:你可以从这篇优秀的MSDN文章中进一步了解ASP.NET 2.0 中标准兼容的情况)。
但在早期的ASP.NET 2.0 beta 中我们注意到的一件事情是,当把客户应用升级时,其实,很多应用会假设页面输出并不是与XHTML兼容的。把我们服务器控件的默认输出改成与XHTML兼容的话,它有时会修改页面的视觉显示。为向后兼容的目的,我们添加了上面这个 <xhtmlConformance> 设置,允许开发人员可以设置控件以Legacy模式(即与ASP.NET 1.1一样,会输出非XHTML标识),或者Transitional 模式 (XHTML Transitional) ,或者 Strict 模式 (XHTML Strict)显示。
在默认情形下,当你使用VS 2003升级到VS 2005的Web项目移植向导时(无论是网站或 web 应用项目),你的web.config文件里会添有这个legacy配置。
解决方案:
除非你已知当你的网站以XHTML模式运行时会有问题(但你还没时间更正),我总是建议从你的web.config文件里去掉 <xhtmlConformance> 这部分,或者你也可以明确地将其设置为Transitional 或 Strict。
这将使得你的HTML输出是符合标准的,此外,这也将导致你的服务器控件的HTML输出是well formed,即, 开始标签和结束标签总是相匹配的。当你使用AJAX技术来动态替换你的页面上某些HTML元素的内容时,这尤其重要,否则的话,客户端JavaScript脚本有时会搞不清楚容器元素,导致出错。它也将确保ASP.NET AJAX会在你的网站上正常工作。
希望本文对你有所帮助,
Scott
分享到:
相关推荐
Asp.Net技术是微软推出的一种用于构建...这份知识锦集可能还包括对以上各点的深入探讨,以及实际开发中遇到的疑难杂症和相应的解决方案。无论是初学者还是有经验的开发者,都能从中受益,提升自己的Asp.Net技术水平。
ASP.NET是微软公司推出的一种用于构建Web应用程序的框架,它基于.NET Framework,为开发者提供了丰富的功能和工具,简化了Web应用...对于有经验的开发者,它也是一个宝贵的参考,解决他们在开发过程中遇到的疑难杂症。
MongoDB疑难杂症分析及优化MongoDB疑难杂症分析及优化MongoDB疑难杂症分析及优化MongoDB疑难杂症分析及优化MongoDB疑难杂症分析及优化MongoDB疑难杂症分析及优化MongoDB疑难杂症分析及优化MongoDB疑难杂症分析及优化...
针对标题和描述中提到的“系统疑难杂症处理文件”,我们可以理解为这可能是一个专门用于诊断和修复这类问题的工具或程序,例如"疑难杂症处理.exe"。 1. **系统故障诊断**:系统疑难杂症处理的第一步通常是进行诊断...
在移动端网络中,DNS 域名劫持是一个严重的问题,它会导致域名解析异常、用户跨网访问缓慢等问题。对于腾讯这样的域名数量在 10 万级别的互联网公司来说,域名解析异常的情况非常严重,每天的域名解析异常量超过了 ...
在电脑使用过程中,我们经常会遇到各种各样的问题,这些问题涵盖了硬件、软件、网络等多个方面。"各类电脑疑难杂症处理"这个主题旨在提供一个全面的解决方案集,帮助用户解决他们在日常使用电脑时遇到的困扰。下面,...
在IT行业中,尤其是在自动化处理和数据操作的场景下,我们经常需要与Microsoft Office应用程序进行交互,Excel尤为常见。本文将深入探讨如何利用COM(Component Object Model)对象来解决处理Excel时遇到的各种复杂...
Java作为世界上最流行的编程语言之一,其复杂性和深度使得开发者在实际开发过程中经常会遇到各种疑难杂症。这份"Java 疑难杂症_笔记.zip"压缩包中的笔记,显然是为了解决这些问题而编写的,旨在帮助Java开发者提高...
“电脑专家2009”是一个在线即时答疑软件。无论是电脑初学者还是老手,在使用电脑时总会遇到这样那样的问题——我的操作系统怎么出现蓝屏了,我用的好好的软件...你来问,大家来答,电脑使用的各种疑难杂症为您一一化解
关于MySQL数据库疑难杂症排查,审明:本资源归原作者所有。
首先,文档标题《一网打尽sap各类用户疑难杂症》暗示了文档的主旨,是为了解决在使用SAP系统时可能遇到的各类问题。SAP是全球领先的企业资源规划(ERP)软件供应商,其产品被广泛应用于企业资源管理、客户关系管理、...
MySQL数据库疑难杂症排查 MySQL 数据库是一种关系型数据库管理系统,广泛应用于各种 Web 应用程序中。但是,在实际应用中,我们经常会遇到各种问题,例如数据库打开速度慢、查询效率低、服务器负载高等问题。因此...
ASP.NET是微软开发的一种用于构建Web应用程序的框架,它提供了丰富的功能和强大的性能。在进行ASP.NET应用的开发过程中,调试是一项至...在实践中,结合文档、网络资源和社区支持,可以更全面地解决调试中的疑难杂症。
【电脑疑难杂症在线解答集锦】是一篇针对初级电脑用户的文章,主要涵盖了电脑使用过程中常见的问题和解决方案。这些问题包括: 1. **软盘引发启动错误**:当电脑开机时出现"Non-System disk or disk error replace ...
17个Docker常见疑难杂症解决方案汇总.docx
在电脑使用过程中,有时会遇到各种“疑难杂症”,如病毒感染、系统文件损坏、注册表出错等,这些问题可能导致电脑运行不正常或者功能受限。针对这种情况,开发了一款名为“电脑疑难杂症处理工具”的软件,它是一款...
通过对“mysql疑难杂症”的深入分析,我们可以看到,在面对MySQL性能问题时,通过一系列的监控工具和方法,能够有效地定位问题所在,并采取相应的解决措施。这对于提高系统的稳定性和响应速度具有重要意义。希望这些...
此外,ZBrush会在导出过程中自动执行FixSeams和UVadjustment,以及垂直翻转材质,确保导出的材质无需额外调整即可在多数3D软件中直接使用。 #### UV重叠检测 确保模型UV不重叠对于贴图正确显示至关重要。ZBrush...