ASP.NET主题样式表渲染

前端之家收集整理的这篇文章主要介绍了ASP.NET主题样式表渲染前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当渲染具有主题页面时,给定主题中的样式表链接标签将在关闭标题之前呈现.有人知道有什么办法改变吗?有没有办法,我可以把这些标签放在开头标签之后?

我知道只要选择所有链接标签并将其放置在开头标签之后,可以通过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文件.

谢谢!

解决方法

我反思了一下,发现了一些有趣的东西.该框架调用了PageTheme派生对象的SetStyleSheet方法,以便在标题中注入链接控件.此代码显示相关逻辑:
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反弹技能,并且可能不符合稳定性或可维护性的最佳利益.

原文链接:https://www.f2er.com/aspnet/246089.html

猜你在找的asp.Net相关文章