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

时间:2013-04-17 14:11:41

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

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

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

然后在Page_Load函数的Site.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/ie.css") + "\" />"));
    }

这是正常的,并且css是正确的,并且在ie10中使用开发人员工具和兼容性我可以看到它包含正确的css。但是,如果我将我的代码更改为等同的代码。它不起作用。的Site.Master:

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

Site.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中定义的类的元素时,他们并不像从未包含过那样。这是怎么回事?

1 个答案:

答案 0 :(得分:1)

您应该使用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]-->