【问题标题】:How to wrap multiple asp.net web form <html> tags in conditional comments?如何在条件注释中包装多个 asp.net web 表单 <html> 标签?
【发布时间】:2014-02-05 17:59:52
【问题描述】:

使用旧的 asp.net web 应用程序,有没有办法在两个 &lt;html&gt; 标签周围添加条件 cmets,同时仍然保持 runat="server" 属性? (服务器端浏览器检测、重写呈现的控件和客户端 css 类添加不是选项)。以下不起作用...

<!--[if lt IE 9]>
     <html class="old-ie" runat="server">
<![endif]-->
<!--[if (gt IE 9)|!(IE)]><!-->
     <html runat="server">
<!--<![endif]-->

这也不行……

 <html runat="server" <!--[if lt IE 9]>class="old-ie"<![endif]-->>

两种情况都会抛出异常。

【问题讨论】:

    标签: html asp.net css webforms conditional-comments


    【解决方案1】:

    您将需要在后面的代码中确定要输出的类,然后输出该 HTML 或附加该属性。

    请记住,这些条件 cmets 始终位于生成的 HTML 中。在第一种情况下,您有两个带有 runat 属性的 HTML 标记无效,因此出现错误。 (实际上只有两个没有 runat 属性的 HTML 标记也是无效的,但可能会导致解析器错误。)在第二个中,您有一个注释塞进了生成错误的 HTML 标记的中间。

    你可以这样做:

    <html runat="server" id="HtmlTag" />
    

    然后在代码隐藏中

    HtmlTag.CssClass = "old-ie";
    

    (未经测试,但你明白了)

    这将使您能够更轻松地管理代码、拥有更清晰的 HTML 输出以及理论上更快的页面加载时间。

    【讨论】:

    • 很遗憾这不起作用,因为这需要服务器端浏览器检测
    【解决方案2】:

    最后,我决定只在样式表周围使用条件 cmets,而不是尝试使用特定于 IE 的 css 类来装饰 &lt;html&gt; 标记。

    【讨论】:

      猜你喜欢
      • 2020-10-10
      • 2012-03-15
      • 1970-01-01
      • 2015-12-19
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      • 2013-09-30
      • 1970-01-01
      相关资源
      最近更新 更多