【问题标题】:Why might ASP.NET be putting JavaScript in HTML Comment blocks, not CDATA?为什么 ASP.NET 可能会将 JavaScript 放在 HTML 注释块中,而不是 CDATA 中?
【发布时间】:2011-01-30 10:32:07
【问题描述】:

我们有一个使用 MS Ajax 1.0 的 ASP.NET 2.0 WebForms 应用程序。它在我们所有的环境(开发、测试、IE6 VM 等)上都运行良好。但是,在客户站点上并没有进行客户端验证。

我们目前正在尝试消除所有各种因素,并且在此过程中我们要求他们获取页面源并将其发送给我们,我们发现了一些有趣的东西。

在我们的环境中,我们的页面在 CDATA 块中有 ASP.NET javascript:

<script type="text/javascript">
//<![CDATA[
. . .
//]]>
</script>

在他们的环境中,相同的代码如下所示:

<script type="text/javascript">
<!--
. . .
//-->
</script>

这可能是一个红鲱鱼,但我想消除它作为验证问题的原因。

有谁知道 ASP.NET 的特定配置/补丁/版本是否可以做到这一点?

【问题讨论】:

    标签: asp.net javascript validation webforms


    【解决方案1】:

    这可能与页面如何(或是否)是rendered as XHTML 有关。在 web.config 中,查找 xhtmlConformance 元素。在您的示例中,您环境中的版本将在 xhtml 中正确使用,但他们环境中的版本看起来像旧版 HTML,而不是 xhtml。

    【讨论】:

      【解决方案2】:

      查看部署机器上的machine.config是否设置为这样:

      <xhtmlConformance mode="Transitional" />
      

      它可能被设置为“旧版”。

      【讨论】:

      • (实际上只是 JacobM 答案的一个变体。谢谢!)
      【解决方案3】:

      虽然将以下行添加到我的应用程序的 web.config 确实阻止了 JavaScript 以块的形式呈现,但它并没有解决验证问题。

      <xhtmlConformance mode="Transitional" />
      

      解决验证问题的方法是在服务器上安装 .NET 2.0 Server Pack 2。除非您安装 SP2,否则在 .NET 2.0 上使用 MS Ajax 1.0 库中的 s 似乎会破坏您的 s。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-01
        • 2015-02-10
        • 2018-06-26
        • 2011-10-22
        • 1970-01-01
        • 2021-12-09
        • 1970-01-01
        相关资源
        最近更新 更多