カスタム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での設計をほとんど不可能にします。
あなたは私の質問のコードスニペットで見ることができるように、私はすでに後にプロパティを使用しています。 – Flo
申し訳ありませんが、私はあなたのコードでそれを逃した。 –