4

我正在制作一个必须在 FF/IE6/IE7/Opera/Safari 上正确呈现的网站。IE6 是一个较晚的要求(当我完成所有其他浏览器时),它必须是可用的,不一定与其他浏览器相同。现在我正在对其进行调整,以便它也可以在 IE6 上使用。

为此,我在我的主题中创建了另一个样式表,名为IE6_override.css. 您可能已经猜到了,我希望它仅在浏览器为 IE6 时应用。有条件的评论非常适合这一点。

唯一的问题是 - ASP.NET<link>为主题文件夹中的每个 CSS 文件呈现一个标签,因此在所有浏览器上无条件地包含此文件。

我想坚持主题,因为我们以后可以为我们的应用程序创建更多皮肤是完全可行的(如果客户愿意的话)。

有什么办法可以让 ASP.NET 从它的自动包含中排除这个特定的 .CSS 文件?

补充:感谢您的回答!最后我找到了解决方法。由于我之前询问过的其他一些样式问题,我也不得不使用 IE6 解决方法 Javascript。因此,我在所有特定于 IE6 的规则前面加上了一个.ie6_dummy类选择器,然后在页面加载时在 JS 中将其删除。:)

4

4 回答 4

7

是的,您可以...您可以在后面的代码中删除特定的页眉控件。css 文件是通过主题自动添加的,但您可以在之后再次删除它们。例如,您可以放入主文件的页面加载:

Page.Header.Controls.Remove(YourCssFile);

或者,如果您想同时删除所有 css 文件:

var themePath = string.Format("~/App_Themes/{0}", Page.Theme);
var removeCandidate = Page.Header.Controls.OfType<HtmlLink>().Where(link => link.Href.StartsWith(themePath)).ToList();
removeCandidate.ForEach(Page.Header.Controls.Remove);
于 2014-10-18T10:29:34.460 回答
5

我不认为你可以。正是出于这个原因,我们停止使用 App_Themes 文件夹。这也让我们不必为每个 css 文件加上一个数字前缀,以便它们以正确的顺序加载。

于 2009-02-16T14:45:57.713 回答
1

事实上,不可能排除特定的 CSS 文件。但是,这里似乎有几种解决方法。我建议通读这些并选择合适的解决方案(如果有的话)。

于 2009-02-16T14:57:16.827 回答
1

网上有一些帖子似乎可以解决您的问题 - 寻找“asp.net 主题中的条件评论”我遇到了这些看起来可能有帮助的帖子:

  1. 如何使用 StylePlaceholder 和 Style 控件控制 ASP.NET 主题中的样式表
  2. 主题中的条件样式表

第一个也将解决主题样式表的媒体问题。

于 2009-02-16T14:58:31.317 回答