Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SharePoint:向CssRegistration类注册CSS文件时,排序CSS引用时出现问题_Css_Sharepoint_Sharepoint 2010 - Fatal编程技术网

SharePoint:向CssRegistration类注册CSS文件时,排序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

我正在开发一个web部件,它需要一些自定义CSS文件。因此,我使用CssRegistration类将它们添加到页面标题中

代码注册了4个CSS文件,这些文件被web部件特性部署到layouts文件夹中。当web部件的属性AdditionalCss中设置了指向第五个CSS文件的路径时,可以选择注册第五个CSS文件。CSS文件应插入到所有SharePoint CSS文件之后的标题中,并应按照代码添加的顺序进行排序

我使用的代码如下:

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属性。