SharePoint: проблема порядка ссылок CSS при регистрации файлов CSS с помощью класса CssRegistration - PullRequest
2 голосов
/ 22 ноября 2010

Я разрабатываю веб-часть, которая нуждается в некоторых пользовательских файлах 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 практически невозможным.

1 Ответ

0 голосов
/ 22 ноября 2010

Вы смотрели на свойство "После" элемента управления CssRegistration? Я думаю, что если вы не укажете порядок, используя это свойство, то результаты в алфавитном порядке в вашем источнике. Это не совсем соответствует тому, что вы видите, но может быть что-то еще, что вызывает ваше непоследовательное поведение.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...