Как исключить конкретный файл CSS из темы ASP.NET? - PullRequest
3 голосов
/ 16 февраля 2009

Я делаю сайт, который должен будет правильно отображаться на FF / IE6 / IE7 / Opera / Safari. IE6 пришел как запоздалое требование (когда я сделал все другие браузеры), и он просто должен быть применим, не обязательно такой же, как в других браузерах. Теперь я настраиваю его так, чтобы он был применим и в IE6.

Для этого я создал еще одну таблицу стилей в моей теме под названием IE6_override.css. Как вы уже догадались, я хочу, чтобы он применялся только в браузере IE6. Для этого идеально подойдут условные комментарии.

Единственная проблема - ASP.NET отображает тег <link> для каждого CSS-файла, который находится в папке темы, таким образом включая этот файл безоговорочно во всех браузерах.

Я хотел бы придерживаться тем, потому что вполне возможно, что мы могли бы создать больше скинов для нашего приложения позже (если клиенты желают этого).

Есть ли способ, как заставить ASP.NET исключить этот конкретный файл .CSS из его автоматического включения?

Добавлено: Спасибо за ваши ответы! В конце концов я нашел обходной путь. Из-за некоторых других проблем со стилем, о которых я спрашивал о ранее, я вынужден также иметь обходной путь IE6 с Javascript. Таким образом, я добавил в префикс все мои специфичные для IE6 правила селектор класса .ie6_dummy, а затем удалил его в JS при загрузке страницы. :)

Ответы [ 4 ]

6 голосов
/ 18 октября 2014

Да, вы можете ... Вы можете просто удалить определенный элемент управления заголовка страницы в коде позади. CSS-файлы добавляются автоматически через темы, но вы можете удалить их снова после. Как, например, вы можете добавить на страницу загрузку вашего мастер-файла:

Page.Header.Controls.Remove(YourCssFile);

Или, если вы хотите удалить все файлы css одновременно:

var themePath = string.Format("~/App_Themes/{0}", Page.Theme);
var removeCandidate = Page.Header.Controls.OfType<HtmlLink>().Where(link => link.Href.StartsWith(themePath)).ToList();
removeCandidate.ForEach(Page.Header.Controls.Remove);
5 голосов
/ 16 февраля 2009

Не думаю, что ты можешь. По этой причине мы прекратили использовать папку App_Themes. Это также избавило нас от необходимости ставить перед каждым CSS-файлом номер, чтобы они загружались в правильном порядке.

1 голос
/ 16 февраля 2009

В сети есть несколько сообщений, которые, кажется, решают вашу проблему - они ищут "Условные комментарии в темах asp.net". Я наткнулся на них, которые выглядят так, как будто они могут помочь:

  1. Как получить контроль над таблицами стилей в темах ASP.NET с помощью StylePlaceholder и элемента управления Style
  2. Условные таблицы стилей в темах

Первый также будет посвящен проблеме СМИ с помощью таблиц стилей темы.

1 голос
/ 16 февраля 2009

Действительно невозможно исключить определенный файл CSS. Однако, кажется, здесь есть несколько обходных путей . Я бы посоветовал прочитать их и выбрать подходящее решение (если есть).

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