如何包装多个asp.net web表单<;html>;条件注释中的标记?

如何包装多个asp.net web表单<;html>;条件注释中的标记?,html,asp.net,css,webforms,conditional-comments,Html,Asp.net,Css,Webforms,Conditional Comments,使用传统asp.net web应用程序时,是否有办法在两个标记周围添加条件注释,同时仍保持runat=“server”属性?(服务器端浏览器检测、重新写入呈现控件和客户端css类添加不是选项)。以下内容不起作用 <!--[if lt IE 9]> <html class="old-ie" runat="server"> <![endif]--> <!--[if (gt IE 9)|!(IE)]><!--> <h

使用传统asp.net web应用程序时,是否有办法在两个
标记周围添加条件注释,同时仍保持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或附加该属性

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

你可以这样做:

<html runat="server" id="HtmlTag" />
(这是未经测试的,但你明白了)


这将允许您更轻松地管理代码,更清晰的HTML输出,理论上更快的页面加载时间。

最后,我决定在样式表周围使用条件注释,而不是试图用IE特定的css类来修饰
标记。

不幸的是,这不起作用,因为这需要服务器端浏览器检测
HtmlTag.CssClass = "old-ie";