在ASP.NET中根据IE版本选择不同的CSS文件

在ASP.NET中根据IE版本选择不同的CSS文件,asp.net,html,Asp.net,Html,我目前正在使用HTML条件语句根据IE版本选择CSS文件。如何在服务器端执行此操作 <!--[if IE 6]> <link rel="stylesheet" type="text/css" href="style/ie6.css" media="screen" /> <![endif]--> <!--[if IE 7]> <link rel="stylesheet" type="text/css" href="style/i

我目前正在使用HTML条件语句根据IE版本选择CSS文件。如何在服务器端执行此操作

<!--[if IE 6]> 
   <link rel="stylesheet" type="text/css" href="style/ie6.css" media="screen" />
<![endif]-->
<!--[if IE 7]> 
   <link rel="stylesheet" type="text/css" href="style/ie7.css" media="screen" />
<![endif]-->
<!--[if IE 8]>
   <link rel="stylesheet" type="text/css" href="style/ie8.css" media="screen" />
<![endif]-->

  • 你的目录结构是什么
  • 您使用的是什么ASP.NET框架、Webforms、MVC
我唯一想到的是您正在使用的CSS路径,例如在MVC中,您应该编写的默认行为
/Content/CSS/ie6.CSS

一个好主意是始终使用反斜杠
/
,它将指向网站根目录并将文件夹附加到从那里开始的路径中

其他一切在ASP.NET中都能很好地工作,请记住唯一的区别是,普通HTML页面不需要任何服务器来运行,因此它会选择您在浏览器中打开文件的所有位置,PHP/ASP.NET需要运行服务器,因此您需要尊重服务器路径


顺便说一句,如果你要创建一个新网站,我建议你…

不知道如何使用aspx,但是有很多方法可以使用aspx

根据HTTP请求确定浏览器类型:

System.Web.HttpBrowserCapabilities browser = Request.Browser
然后相应地呈现页面:

<% if (browser.Browser == "IE" && browser.MajorVersion == 6) { %>
  <link rel="stylesheet" type="text/css" href="style/ie6.css" media="screen" />
<% } else if (browser.Browser == "IE" && browser.MajorVersion == 7) { %>
  <link rel="stylesheet" type="text/css" href="style/ie7.css" media="screen" />
<% } else if (browser.Browser == "IE" && browser.MajorVersion == 8) { %>
  <link rel="stylesheet" type="text/css" href="style/ie8.css" media="screen" />
<% } %>

我相信您必须在页面的
元素中设置
runat=“server”
属性才能工作


但这不是一个很好的方法。更好的方法是使用JavaScript或问题中使用的方法在客户端执行。

我认为您应该坚持当前的解决方案,但如果需要在服务器端执行,您可以始终检查用户代理,然后注册样式表

像这样的东西

Dim userAgent As String = Request.UserAgent

If (userAgent.IndexOf("MSIE 6.0") > -1) Then

  HtmlLink css = new HtmlLink();
  css.Href = "css/ie6.css";
  css.Attributes["rel"] = "stylesheet";
  css.Attributes["type"] = "text/css";
  css.Attributes["media"] = "all";
  Page.Header.Controls.Add(css);

End If
阅读更多关于

的信息,尝试以下方法:

<link runat="server" rel="stylesheet" type="text/css" 
   ie:href="style/ie6.css" ie7:href="style/ie7.css" ie8:href="style/ie8.css"
   ie9:href="style/ie8.css" ie0plus:"style/ie8.css"
   media="screen" />
如果需要,也可以添加自己的模式文件(不要编辑现有的模式文件)。添加一个后,运行:

aspnet_regbrowsers -i
请注意。接受答案(将代码添加到
):

如果
设置为
runat=“server”
,并且您(或任何其他代码)试图更改磁头的
。控件
集合,则会导致错误


AJAX控件工具包在某些情况下会执行此操作。

类似于此..,我有来自html的代码,并在aspxTanks balexandre中重写,用于编辑我的问题。@YusanSusandi在中,您可以了解如何正确使用标记,以及在编写时,您可以简单地打开橙色的
符号,打开一个带有标记格式的简单对话框,您可以使用该格式。aspx中的介于“”之间读取为comentar,因此不会执行。如何在aspx中编写?我放在标签里的代码。。。不,这是您的编辑器高亮显示,代码将按原样运行,并将准确输出所需内容。只需尝试一下简单的CSS规则,例如
body{background color:red;}
,并更改其他3个文件(
ie7.CSS
ie8.CSS
.html
文件)中的颜色-如果客户端正在欺骗其用户代理,请确保
red
背景位于
ie6.CSS
),他们应该得到他们所拥有的任何渲染问题:P
aspnet_regbrowsers -i