如何从ASP.NET主题中排除特定的CSS文件?
我正在制作一个必须在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将其删除。 :)
我不认为你可以。正是出于这个原因,我们停止使用App_Themes文件夹。这也节省了我们必须在每个css文件前加上一个数字,以便按正确的顺序加载。
有一对夫妇在网络上的帖子出来,这似乎解决您的问题 - 寻找“在asp.net主题条件注释”我在这些看起来像来到他们可能会帮助:
- How to take control of style sheets in ASP.NET Themes with the StylePlaceholder and Style control
- Conditional stylesheets in Themes
第一个还将解决与主题风格的媒体问题为好。
是的,你可以...你可以在后面的代码中删除特定的页眉控件。 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);
,我不得不删除一个CSS文件从我的母版页中引用,所以我这样做:`Page.Header.Controls.Remove(Page.Master.FindControl(“cssBootstrap”));`确保添加`runat =“server”`并将一个id分配给你的CSS参考。 – Danish 2015-10-06 23:21:03