Я разрабатываю веб-часть, которая нуждается в некоторых пользовательских файлах CSS.Поэтому я использую класс CssRegistration, чтобы добавить их в заголовок страницы.
Код регистрирует 4 файла CSS, которые были развернуты в папке раскладок с помощью функции веб-части.Пятый CSS-файл при желании регистрируется, если путь к нему задан в свойстве веб-части AdditionalCss
.Файлы CSS должны быть вставлены в заголовок после всех файлов CSS SharePoint и должны быть отсортированы в том порядке, в котором они были добавлены кодом.
Я использовал следующий код:
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);
}
Когда я добавляю веб-часть на страницу, все CSS-файлы добавляются на страницу, как и ожидалось.За исключением файлов, отсортированных в неправильном порядке.
Без пользовательского файла CSS порядок: (атрибут rel- и type-link был удален для лучшего обзора)
...
<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 практически невозможным.