<xhtmlConformance mode="Legacy"/> AJAX不起作用
2014-07-25 13:04
369 查看
转自:http://blog.csdn.net/wem520/article/details/6872751
在ASP.NET AJAX中别使用<xhtmlConformance mode="Legacy"/>
2007年12月12日 星期三 10:03
把VS 2003 Web项目自动移植到VS 2005的,在web.config文件中还配置有 <xhtmlConformance mode="Legacy"/> 。
在使用ASP.NET AJAX UpdatePanel 控件时,这个奇怪的行为有时会包括页面做整页 postback,而不仅是递增性的局部更新的情形。
当你打开你的web.config文件,你会看到其中的 <xhtmlConformance/> 元素,象这样:
<configuration>
<system.web>
<xhtmlConformance mode="Legacy"/>
</system.web>
</configuration>
ASP.NET 1.0 和 1.1 中的许多服务器端控件并不输出与XHTML兼容的标识。ASP.NET 2.0 对此做了改变,在默认情形下,所有的服务器端控件都会输出与XHTML兼容的标识.
但在早期的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会在你的网站上正常工作。
详见页面http://www.microsoft.com/china/msdn/library/webservices/asp.net/ASPNETusStan.mspx
为了满足每个人的要求,Microsoft 创建了一个名为 xhtmlConformance 的新配置选项,您可以在 Web 站点的配置文件中设置该选项。新的配置选项使您能够指定 Web 页的 XHTML 一致性的级别。它的内容如下所示。
<configuration>
<system.web>
<xhtmlConformance
mode= "transitional " />
</system.web>
</configuration>
默认情况下,xhtmlConformance 设置为值 transitional。但是,还可以将该选项设置为值 strict 或 legacy。
如果将 xhtmlConformance 选项设置为 strict,那么标准的 ASP.NET 控件将不会再呈现某些属性。例如,ASP.NET <form> 控件将不再呈现 name 属性。除非 ASP.NET 页包含(不符合标准的)客户端脚本,否则从 transitional 模式切换到 strict 模式时,不会注意到任何变化。
如果将 xhtmlConformance 选项设置为 legacy,那么对于某些元素和属性(但不是全部),ASP.NET 框架将恢复为 ASP.NET 1.1 呈现行为。在这种情况下,ASP.NET 框架将呈现不与任何 XHTML 标准兼容的内容,并且页将不再通过 XHTML 标准验证。例如,在 legacy 模式下,呈现 <br> 标记时不会呈现它需要的 XHTML 结束斜杠 ( <br /> )。只有在将现有 ASP.NET
1.1 应用程序迁移到 ASP.NET 2.0 的过程中遇到问题时,将 xhtmlConformance 设置为 legacy 模式才是有意义的。
在ASP.NET AJAX中别使用<xhtmlConformance mode="Legacy"/>
2007年12月12日 星期三 10:03
把VS 2003 Web项目自动移植到VS 2005的,在web.config文件中还配置有 <xhtmlConformance mode="Legacy"/> 。
在使用ASP.NET AJAX UpdatePanel 控件时,这个奇怪的行为有时会包括页面做整页 postback,而不仅是递增性的局部更新的情形。
当你打开你的web.config文件,你会看到其中的 <xhtmlConformance/> 元素,象这样:
<configuration>
<system.web>
<xhtmlConformance mode="Legacy"/>
</system.web>
</configuration>
ASP.NET 1.0 和 1.1 中的许多服务器端控件并不输出与XHTML兼容的标识。ASP.NET 2.0 对此做了改变,在默认情形下,所有的服务器端控件都会输出与XHTML兼容的标识.
但在早期的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会在你的网站上正常工作。
详见页面http://www.microsoft.com/china/msdn/library/webservices/asp.net/ASPNETusStan.mspx
为了满足每个人的要求,Microsoft 创建了一个名为 xhtmlConformance 的新配置选项,您可以在 Web 站点的配置文件中设置该选项。新的配置选项使您能够指定 Web 页的 XHTML 一致性的级别。它的内容如下所示。
<configuration>
<system.web>
<xhtmlConformance
mode= "transitional " />
</system.web>
</configuration>
默认情况下,xhtmlConformance 设置为值 transitional。但是,还可以将该选项设置为值 strict 或 legacy。
如果将 xhtmlConformance 选项设置为 strict,那么标准的 ASP.NET 控件将不会再呈现某些属性。例如,ASP.NET <form> 控件将不再呈现 name 属性。除非 ASP.NET 页包含(不符合标准的)客户端脚本,否则从 transitional 模式切换到 strict 模式时,不会注意到任何变化。
如果将 xhtmlConformance 选项设置为 legacy,那么对于某些元素和属性(但不是全部),ASP.NET 框架将恢复为 ASP.NET 1.1 呈现行为。在这种情况下,ASP.NET 框架将呈现不与任何 XHTML 标准兼容的内容,并且页将不再通过 XHTML 标准验证。例如,在 legacy 模式下,呈现 <br> 标记时不会呈现它需要的 XHTML 结束斜杠 ( <br /> )。只有在将现有 ASP.NET
1.1 应用程序迁移到 ASP.NET 2.0 的过程中遇到问题时,将 xhtmlConformance 设置为 legacy 模式才是有意义的。
相关文章推荐
- <xhtmlConformance mode="Legacy"/> AJAX不起作用
- <xhtmlConformance mode="Legacy"/> 致ajax失效
- xhtmlConformance mode="Legacy"节点致ajax.net失效
- <xhtmlConformance mode="Legacy"/>时,UpdatePanel会失效。
- <authentication mode="Forms"> 发布错误
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://......dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">是啥?
- <authentication+mode="Forms">+是应用级别的...在子目录下用+<authorization>节来控制访问的解决方法
- <httpRuntime requestValidationMode="2.0" />
- <xhtmlConformance mode="Legacy"/> 配置文件
- 当使用JQuery的"$",抛异常Uncaught TypeError: Object #<Object> has no method 'ajax'
- <a> href=javascript://与href="#"的区别
- "<>"、"!="、"not in"、"exsits"和"not exists"的使用规范
- 解决用<img src="<%# Eval("ShowPhoto")%>"动态绑定图片,发布到IIS上无法显示的问题
- <c:set var="root" value="${pageContext.request.contextPath}"></c:set>According to TLD or attribute d
- <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>标签再使用时报错
- 头文件中的<>与""
- <%@ Page EnableEventValidation="true" %> asp:DataList OnItemCommand=
- jQuery 联动 与 DOCTYPE W3C<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 结合没ajax效果问题
- &lt;a href=&quot;javascript:history.back();&quot;&gt;返回上一页&lt;/a&gt;