2010-11-22 3 views
2

カスタムCSSファイルが必要なWebパーツを開発しています。だから、私はCssRegistrationクラスを使用してページヘッダーに追加します。SharePoint:CSSファイルをCssRegistrationクラスに登録するときにCSSリファレンスを注文する際の問題

コードは、Webパーツ機能によってレイアウトフォルダに展開された4つのCSSファイルを登録します。 5番目のCSSファイルは、WebパーツのプロパティーAdditionalCssにパスが設定されている場合に、オプションで登録されます。 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 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ファイルがコードで追加された順番でソートされることはありませんでした。

この奇妙な動作では、CSSファイルが常に同じ順序であることを 中継できないため、CssRegistrationクラス全体があまり役に立ちません。これは、CSSでの設計をほとんど不可能にします。

答えて

0

CssRegistrationコントロールの「After」プロパティを見ましたか?私はあなたがこのプロパティを使用して注文を指定しないと、結果があなたのソースにアルファベット順であると思います。これはあなたが見ているものとまったく同じではありませんが、あなたの矛盾した動作を引き起こしている何か他のものがあるかもしれません。

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

+0

あなたは私の質問のコードスニペットで見ることができるように、私はすでに後にプロパティを使用しています。 – Flo

+0

申し訳ありませんが、私はあなたのコードでそれを逃した。 –

関連する問題