CSS и изображения на главной странице

У меня есть довольно популярная проблема, но я не смог найти решение, которое работает.

В основном я использую мастер-страницу (/Masterpages/Default.master), которая включает

<link href="../css/style.css" rel="stylesheet" type="text/css />

И это также включает в себя некоторые изображения с той же относительной связью.

Но когда я применяю мастер-страницу к страницам содержимого (на разных уровнях папок), форматирование css и изображения теряются.

Есть ли способ динамически разрешать ссылки на уровне папок css и изображения на все страницы контента с помощью главной страницы?

заранее спасибо

ОБНОВИТЬ:

Есть дополнительная проблема. Сложно сделать так, чтобы вывод правильно отображался как в браузере, так и в режиме конструктора в Visual Studio.

Я заставил его работать, используя решение asp: image для изображений на главной странице и дважды связывая css на главной странице, одну для визуализации в VS и одну для корректного просмотра сайта.

<link href="../css/style.css" rel="stylesheet" type="text/css" />
<link href="<%=ResolveUrl("~/css/style.css")%>" rel="stylesheet" type="text/css" />
13.10.2009 11:13:41
8 ОТВЕТОВ
РЕШЕНИЕ

лучше всего использовать:

<link href="<%=ResolveUrl("~/css/style.css") %>" rel="stylesheet" type="text/css />

так как это будет справляться с корнями приложения iis в отличие от:

<link href="/css/style.css" rel="stylesheet" type="text/css />
10
13.10.2009 11:18:50
Не, если вы используете компонент asp: Image, но да, если вы используете теги <img /> html и задаете атрибут src.
Richard 19.10.2009 09:30:45

Совершенно уверен, что это будет работать

<link href="/css/style.css" rel="stylesheet" type="text/css />

/ переводит вас в корень вашего сайта

1
13.10.2009 11:18:30
Это работает, пока вы не опубликуете свое приложение в подпапке веб-сайта.
tvanfosson 13.10.2009 11:23:17

Изображения в CSS относятся к файлу, на который они ссылаются.

(Исключением из этого является правило «фильтра» в Internet Explorer, которое используется для исправлений PNG. Изображения в этом случае относятся к документу HTML.)

0
13.10.2009 11:18:37

Вы можете использовать тильду, чтобы получить ссылку на работу из любого места. Это будет работать и в изображениях.

<link runat="server" href="~/css/style.css" rel="stylesheet" type="text/css />
1
13.10.2009 11:20:28

Да, проблема в том, что materpage использует относительный URL для загрузки CSS:

"../css/style.css"

вам нужно изменить это на корень сайта (в зависимости от расположения ваших CSS-файлов) что-то вроде:

"/css/style.css"

чем все уровни папок могут использовать один и тот же URL.

0
13.10.2009 11:21:03

Вы можете сделать ссылку runat = "server" и использовать отображение тильды, чтобы сделать путь CSS относительно корня сайта.

<link runat="server" id="siteStyle"
      href="~/css/style.css"
      rel="stylesheet"
      type="text/css" />

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

3
13.10.2009 11:21:50

На самом деле, мастер-страницы автоматически перебазируют css-файлы без необходимости добавлять runat = "server". Убедитесь, что ваш CSS-файл находится на один каталог в указанной вами папке.

Вы можете использовать абсолютный путь к файлу CSS, но Visual Studio, похоже, не отображает стили в режиме конструктора, когда вы делаете это. Кроме того, иногда вы не будете знать, собираетесь ли вы работать в виртуальном каталоге, поэтому не всегда идеально использовать абсолютный путь.

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

0
13.10.2009 11:31:34

Вам также может быть интересно посмотреть темы и скины.

ASP.NET темы и обзор скинов

0
13.10.2009 11:43:50