我知道只要选择所有链接标签并将其放置在开头标签之后,可以通过jquery关闭,但是有没有办法在服务器端设置?
澄清
让我们说我在主题中有一个单独的css文件(themed.css).在这个css文件中,对于标识为test的div标签,我有一个单一的样式定义:
#test {background-color:red; color:white;}
让我们还说我有一个不在我的主题中的第二个css文件(standard.css),但是它具有另一个定义的div标签,其ID为test:
#test {background-color:yellow;}
我有我的页面使用主题,我有一个手写链接标签来使用standard.css.执行页面时,standard.css的链接标签位于themed.css之前.当这种情况发生时,我的具有测试ID的div标签具有红色背景和白色前色.如果我想要themed.css应用然后standard.css覆盖必要的属性(黄色背景与白色的forecolor),我想要themed.css和THEN标准.我不能这样做,因为ASP.NET将主题文件放在关闭头标记之前.
我不想知道我的主题的CSS文件是我头文件中的第n个链接标记,然后手动更改任何索引,只要我可以在我的主题之外添加一个新的CSS文件.
谢谢!
解决方法
int num = 0; foreach (string str in this.LinkedStyleSheets) { HtmlLink child = new HtmlLink { Href = str }; child.Attributes["type"] = "text/css"; child.Attributes["rel"] = "stylesheet"; if (this._styleSheetTheme) this.Page.Header.Controls.AddAt(num++,child); else this.Page.Header.Controls.Add(child); }
翻译? StyleSheetThemes将样式表注入头标签的开头,主题注入样式表到最后.
这与主题和样式表主题之间的预期区别是一致的;也就是说,当皮肤和控制设置之间存在冲突时,主题总是会赢.当然,使用!important属性的非主题的.CSS文件中的样式仍然可以覆盖主题样式,但是头文件中的CSS文件的定位有助于覆盖能力样式表主题.
请注意,您可以同时拥有样式表主题和常规主题.自然地,将样式表主题设计为可以覆盖的主题,以及不应该被覆盖的主题.
最后一个观察结果是,该方法是内部和非虚拟的,所以干扰这两个选项将需要一些功夫MMA反弹技能,并且可能不符合稳定性或可维护性的最佳利益.