c# - 在 C# ASP.net Webforms 中有条件地包含 css

标签 c# asp.net css internet-explorer webforms

我试图根据用户使用的浏览器有条件地包含一个 css 文件。我已经能够让它以一种方式工作,但不是我想要的方式,因为它需要一个额外的样式表。工作方式是,在我的 Site.Master 文件中,我包含了 ie8 的样式表。

<link href="~/Styles/ie8.css" rel="Stylesheet" type="text/css" />

然后在 Site.Master.cs 中的 Page_Load 函数中。

    if (!(browser.Type == "IE8" ||
        browser.Type == "IE7" ||
        browser.Type == "IE6" ||
        browser.Type == "IE5"))
    {
        Page.Header.Controls.Add(new LiteralControl(
            "<link rel=\" stylesheet\" type=\"text/css\" href=\"" + ResolveUrl("~/Styles/ie.css") + "\" />"));
    }

这有效并且 css 是正确的并且在 ie10 中使用开发人员工具和兼容性我可以看到它包含正确的 css。但是如果我将我的代码更改为应该等效的代码。它不起作用。站点管理员:​​

<link href="~/Styles/ie.css" rel="Stylesheet" type="text/css" />

网站.Master.cs

    if ((browser.Type == "IE8" ||
        browser.Type == "IE7" ||
        browser.Type == "IE6" ||
        browser.Type == "IE5"))
    {
        Page.Header.Controls.Add(new LiteralControl(
            "<link rel=\" stylesheet\" type=\"text/css\" href=\"" + ResolveUrl("~/Styles/ie8.css") + "\" />"));
    }

如果我在 Page.Header.Controls.Add 处放置一个断点,我可以看到在 ie10 中处于兼容模式时该函数被调用。但是当我转到开发工具并寻找使用 ie8.css 中定义的类的元素时,它们并不存在,就像它从未包含在内一样。这是怎么回事?

最佳答案

您应该使用 conditional comments 而不是检查 IE 服务器端:

<!--[if lte IE 8]><link href="ie8.css" rel="Stylesheet" type="text/css" /><![endif]-->
<!--[if lte IE 7]><link href="ie.css" rel="Stylesheet" type="text/css" /><![endif]-->

关于c# - 在 C# ASP.net Webforms 中有条件地包含 css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16062384/

相关文章:

c# - XML 文档解析 C#

javascript - 在网络中重新着色图像

c# - ASP.NET MVC 需要两个不同版本的 Newtonsoft.Json.dll

c# - visual studio xamarin.forms 中的秒表将 100 毫秒添加到 react 时间测试

asp.net - WebForms 在自动回发期间不包括表单中的电子邮件输入类型

c# - ASP.Net - 在 SiteMapPath 中链接网站

c# - 在 asp.net 应用程序中重定向页面时删除引荐来源信息

jquery - 数学 - 计算调整大小的图像的新大小

css - 如何收缩包装CSS网格?

c# - 无法在目标计算机上加载文件或程序集 system.data.sqlite