将 ASP .Net 项目从带有 Visual Studio 2010 的 .Net 4.0 升级到带有 Visual Studio 2012 的 .Net 4.5 后,某些页面上的 JavaScript 代码停止工作。这是因为某些元素(例如,表单元素)上的“名称”属性不再呈现给浏览器。
即使以下部分仍然在 web.config 文件中,“名称”属性也会被抑制:
<xhtmlConformance mode="Transitional"/>
什么可能导致这种行为发生变化?
将 ASP .Net 项目从带有 Visual Studio 2010 的 .Net 4.0 升级到带有 Visual Studio 2012 的 .Net 4.5 后,某些页面上的 JavaScript 代码停止工作。这是因为某些元素(例如,表单元素)上的“名称”属性不再呈现给浏览器。
即使以下部分仍然在 web.config 文件中,“名称”属性也会被抑制:
<xhtmlConformance mode="Transitional"/>
什么可能导致这种行为发生变化?
此问题是由升级过程对 web.config 文件的另一部分所做的更改引起的。
事实证明,呈现 name 属性的决定也由web.config 文件的 pages 元素中的controlRenderingCompatibilityVersion属性控制。
在升级解决方案/项目的过程中,价值
controlRenderingCompatibilityVersion="3.5"
更新为
controlRenderingCompatibilityVersion="4.0"
检查xhtmlConformance的 .Net Framework 代码还检查controlRenderingCompatibilityVersion 。4.0 或更高版本胜过xhtmlConformance的“模式”属性设置。(例如在System.Web.UI.HtmlControls.HtmlForm类的RenderAttributes方法中)