【发布时间】: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