ASP.NET 1.0 | ASP.NET 1.1 迁移 .net高版本时 问题

  今天改了一个别人的代码 遇到了一些问题,原来改的这个网站是别人从 .NET 1.1升级到2.0的 ,.net 这2个版本对于标签最终呈现输出时的动作不是如初一致的,导致了 在迁移问题上带来的 标签输出有误的情况了,但也不是涉及到很广的范围了;

   查了些资料,最终找到比较好的解决方法了,还是那个思想,对于全局似的,尽可能将其进行配置,然而可以再WEB.CONFIG 中设置某些值来解决这个迁移时带来的小问题了;以下是截取人家的 文章 ,公参考:

  

<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"/>

【原文地址】 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"/> 。

症状: 当你往先前成功地从VS 2003 升级到VS 2005的项目中添加新的客户端JavaScript脚本时,你会看到奇怪的行为。在使用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兼容的标识 (注:你可以从这篇优秀的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会在你的网站上正常工作。

 

 

posted @ 2009-12-01 10:39  小肖程序  阅读(338)  评论(0编辑  收藏  举报