【问题标题】:Conditionally Including css in C# ASP.net Webforms有条件地在 C# ASP.net Webforms 中包含 css
【发布时间】:2013-04-10 08:29:26
【问题描述】:

我正在尝试根据用户使用的浏览器有条件地包含一个 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。但是,如果我将代码更改为应该等效的代码。它不起作用。 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 中定义的类的元素时,它们并不存在,就像它从未包含在内一样。这是怎么回事?

【问题讨论】:

  • 为什么需要使用开发工具和断点来查看样式表是否包含在内?只需查看源代码。

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


【解决方案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]-->

【讨论】:

  • 我已经看到了这方面的建议,但我永远无法让它们发挥作用。我看到了什么 css-tricks.com/how-to-create-an-ie-only-stylesheet 。当我将它输入&lt;!--[if lte IE 8]&gt; &lt;![endif]--&gt; 时,Visual Studio 似乎认为这是一条评论。除非我把它输入到不正确的地方。如果我能让它工作,我宁愿在客户端做。
  • 如果您不在head 标签(或head 中的ContentPlaceHolder)之间,那么您来错地方了。它在 VS 中应该可以正常工作。
  • 它有效。我更喜欢这个解决方案,尽管它没有回答问题。完全莫名其妙的是,当它实际做某事时,为什么会将其标记为注释。如果它对程序有影响,那不是评论。以及为什么服务器端不起作用也是没有意义的。
  • 一条评论。只有来自雷德蒙德的肮脏的人承认这些说法。这就是为什么它们被称为“条件 cmets”。
  • 嗨@DiegoNolan,我还是不能让它工作。我已经在我的主人 w3.org/1999/xhtml"> 你能告诉我你是怎么解决的吗?
猜你喜欢
  • 2016-04-05
  • 2012-04-26
  • 2011-11-01
  • 1970-01-01
  • 2013-02-28
  • 2012-04-21
  • 2011-03-19
  • 2010-10-17
  • 1970-01-01
相关资源
最近更新 更多