SharePoint:向CssRegistration类注册CSS文件时,排序CSS引用时出现问题
我正在开发一个web部件,它需要一些自定义CSS文件。因此,我使用CssRegistration类将它们添加到页面标题中 代码注册了4个CSS文件,这些文件被web部件特性部署到layouts文件夹中。当web部件的属性AdditionalCss中设置了指向第五个CSS文件的路径时,可以选择注册第五个CSS文件。CSS文件应插入到所有SharePoint CSS文件之后的标题中,并应按照代码添加的顺序进行排序 我使用的代码如下:SharePoint:向CssRegistration类注册CSS文件时,排序CSS引用时出现问题,css,sharepoint,sharepoint-2010,Css,Sharepoint,Sharepoint 2010,我正在开发一个web部件,它需要一些自定义CSS文件。因此,我使用CssRegistration类将它们添加到页面标题中 代码注册了4个CSS文件,这些文件被web部件特性部署到layouts文件夹中。当web部件的属性AdditionalCss中设置了指向第五个CSS文件的路径时,可以选择注册第五个CSS文件。CSS文件应插入到所有SharePoint CSS文件之后的标题中,并应按照代码添加的顺序进行排序 我使用的代码如下: var contentCss = new CssRegistrat
var contentCss = new CssRegistration
{ Name = "/_layouts/MyWebPart/css/content.css",
RevealToNonIE = true };
if (SPContext.Current.Web.UIVersion == 4)
contentCss.After = "corev4.css";
else
contentCss.After = "core.css";
Controls.Add(contentCss);
var customCss = new CssRegistration
{ Name = "/_layouts/MyWebPart/css/cn_custom.css",
After = contentCss.Name, RevealToNonIE = true };
Controls.Add(customCss);
var styleCss = new CssRegistration
{ Name = "/_layouts/MyWebPart/css/styles.css",
After = customCss.Name, RevealToNonIE = true };
Controls.Add(styleCss);
var colorsCss = new CssRegistration
{ Name = "/_layouts/MyWebPart/css/colors.css",
After = styleCss.Name, RevealToNonIE = true};
Controls.Add(colorsCss);
if (!string.IsNullOrEmpty(AdditionalCss))
{
var webPartCustomCss = new CssRegistration
{ Name = AdditionalCss,
After = colorsCss.Name,
RevealToNonIE = true };
Controls.Add(webPartCustomCss);
}
当我将web部件添加到页面时,所有CSS文件都会按预期添加到页面中。除了文件按错误的顺序排序
没有自定义CSS文件,顺序是:为了更好地概述,删除了link的rel-和type属性
...
<link href="/_layouts/1033/styles/Themable/corev4.css"/>
<link href="/_layouts/MyWebPart/css/colors.css"/>
<link href="/_layouts/MyWebPart/css/content.css"/>
<link href="/_layouts/MyWebPart/css/cn_custom.css"/>
<link href="/_layouts/MyWebPart/css/styles.css"/>
对于自定义CSS文件,顺序为:
...
<link href="/_layouts/1033/styles/Themable/corev4.css"/>
<link href="/_layouts/MyWebPart/css/cn_custom.css"/>
<link href="/sites/mysite/Style%2520Library/de-de/test.css"/>
<link href="/_layouts/MyWebPart/css/styles.css"/>
<link href="/_layouts/MyWebPart/css/content.css"/>
<link href="/_layouts/MyWebPart/css/colors.css"/>
正如您所看到的,这两种情况提供了完全不同的顺序,CSS文件从来没有按照代码添加的顺序进行排序
有了这种奇怪的行为,整个CssRegistration类就没有多大用处了
中继CSS文件始终处于相同的顺序。这使得使用CSS进行设计几乎不可能 您是否查看了CssRegistration控件的After属性?我认为,如果不使用此属性指定顺序,那么结果将按源代码中的字母顺序排列。这与你所看到的并不完全相符,但可能还有其他原因导致你的行为不一致
您是否查看了CSS注册控件的After属性?我认为,如果不使用此属性指定顺序,那么结果将按源代码中的字母顺序排列。这与你所看到的并不完全相符,但可能还有其他原因导致你的行为不一致
正如您在我问题的代码段中看到的,我已经在使用After属性。正如您在我问题的代码段中看到的,我已经在使用After属性。