【问题标题】: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 应用程序,有没有办法在两个 <html> 标签周围添加条件 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 类来装饰 <html> 标记。