簡體   English   中英

SharePoint:使用CssRegistration類注冊CSS文件時,排序CSS引用時出現問題

[英]SharePoint: Problem ordering the CSS references when registering CSS files with the CssRegistration class

我正在開發一個需要一些自定義CSS文件的Web部件。 所以我正在使用CssRegistration類將它們添加到頁面標題中。

該代碼注冊了4個CSS文件,這些文件已通過Web部件功能部署到布局文件夾中。 如果在Web部件的屬性AdditionalCss設置了第五個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文件,則順序為:(為了更好的概述,刪除了鏈接的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”屬性? 我認為,如果不使用此屬性指定順序,則結果在源中將按字母順序排列。 這與您所看到的不完全匹配,但是可能正在發生其他事情,導致您的行為不一致。

http://www.wictorwilen.se/Post/What-is-new-with-the-CssRegistration-control-in-SharePoint-2010.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM