如何从ASP.NET主题中排除特定的CSS文件?

时间:2009-02-16 14:37:44

标签: asp.net themes

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

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

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

我想坚持主题,因为我们可以在以后为我们的应用程序创建更多皮肤是完全可行的(如果客户希望这样做)。

有什么办法可以让ASP.NET从其自动包含的?

中排除这个特定的.CSS文件

已添加:感谢您的回答!最后我找到了一个解决方法。由于我之前asked about的一些其他样式问题,我也被迫使用IE6解决方法Javascript。因此,我使用 .ie6_dummy 类选择器将所有IE6特定规则作为前缀,然后在页面加载时将其删除。 :)

4 个答案:

答案 0 :(得分:6)

是的,你可以......你可以在后面的代码中删除特定的页眉控件。 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);

答案 1 :(得分:5)

我认为你不能。出于这个原因,我们停止使用App_Themes文件夹。这也节省了我们必须为每个css文件添加一个数字前缀,以便按正确的顺序加载。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

  1. How to take control of style sheets in ASP.NET Themes with the StylePlaceholder and Style control
  2. Conditional stylesheets in Themes
  3. 第一个也将解决主题样式表的媒体问题。