2009-02-16 78 views
3

我正在制作一个必须在FF/IE6/IE7/Opera/Safari上正确呈现的网站。 IE6是一个迟到的要求(当我完成所有其他浏览器时),它必须是可用的,不一定与其他浏览器相同。现在我正在调整它,以便它可以在IE6上使用。如何从ASP.NET主题中排除特定的CSS文件?

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

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

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

有没有什么办法可以让ASP.NET从它的auto-includes中排除这个特定的.CSS文件?

加了:谢谢你的回答!最后我找到了一个解决方法。由于其他造型问题,我早些时候使用了asked about,所以我不得不使用IE6解决方法。因此,我将所有IE6特定的规则添加到类选择器中,然后在加载页面时通过JS将其删除。 :)

回答

5

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

1

确实无法排除特定的CSS文件。但是,似乎有几个解决方法located here。我建议阅读这些内容并选择合适的解决方案(如果有的话)。

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); 
+0

,我不得不删除一个CSS文件从我的母版页中引用,所以我这样做:`Page.Header.Controls.Remove(Page.Master.FindControl(“cssBootstrap”));`确保添加`runat =“server”`并将一个id分配给你的CSS参考。 – Danish 2015-10-06 23:21:03

相关问题