Виртуальные тракты родственника эталонного приложения в .css файле

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

25
задан abatishchev 1 December 2011 в 15:05
поделиться

5 ответов

К сожалению, Firefox имеет глупую ошибку здесь..., пути относительно пути страницы, вместо того, чтобы быть относительно положения файла CSS. Что означает, есть ли у Вас страницы в различных положениях в дереве (как наличие Default.aspx в корне и Information.aspx в папке View) нет никакого способа иметь рабочие относительные пути. (IE правильно решит пути относительно местоположения файла CSS.)

единственной вещью, которую я мог найти, является этот комментарий http://www.west-wind.com/weblog/posts/269.aspx , но, честно говоря, мне не удалось заставить его работать все же. Если я сделаю то я отредактирую этот комментарий:

ре: Понимание Путей ASP.NET Russ Brooks 25 февраля 2006 8:43

вопрос Никакой полностью отвеченной Казарки о каналах передачи изображения в самом файле CSS. У меня есть ответ. Вопрос был, "Как мы используем относительные приложением каналы передачи изображения В файле CSS?" Я долго расстраивался этой самой проблемой также, таким образом, я просто провел прошлые 3 часа, разрабатывая решение.

решение состоит в том, чтобы выполнить Ваши файлы CSS через обработчик страниц ASPX, затем использовать маленький бит серверного кода в каждом из путей для вывода корневого пути приложения. Готовый?

  1. Добавляют к web.config:
 <compilation debug="true">
 <!-- Run CSS files through the ASPX handler so we can write code in them. -->
 <buildProviders>
 <add extension=".css" type="System.Web.Compilation.PageBuildProvider" />
 </buildProviders>
 </compilation>

 <httpHandlers>
 <add path="*.css" verb="GET" type="System.Web.UI.PageHandlerFactory" validate="true" />
 </httpHandlers>
  1. Внутренняя часть Ваш CSS, используйте Запрос. Свойство ApplicationPath везде, где путь существует, как это:

    #content {фон: URL (< % = Запрос. % ApplicationPath>/images/bg_content.gif) повторение-y;}

  2. .NET подает страницы ASPX с типом MIME "текста/HTML" по умолчанию, следовательно, Ваши новые страницы CSS серверной стороны поданы с этим типом MIME, который заставляет браузеры неIE не читать файл CSS правильно. Мы должны переопределить это, чтобы быть "text/css". Просто добавьте эту строку как первую строку Вашего файла CSS:

    <%@ ContentType="text/css" %>
    
11
ответ дан tomfanning 28 November 2019 в 21:47
поделиться

В случае, если Вы не знали, что могли сделать это...

при предоставлении относительного пути ресурсу в CSS это относительно файла CSS, не файла включая CSS.

background-image: url(../images/test.gif);

, Таким образом, это могло бы работать на Вас.

8
ответ дан Allain Lalonde 28 November 2019 в 21:47
поделиться

В .css файле можно использовать относительные пути; таким образом в Вашем примере, скажите помещение css файла в ~/Styles/mystyles.css. Можно использовать URL (../Images/Test.gif) в качестве примера.

-3
ответ дан Chris Shaffer 28 November 2019 в 21:47
поделиться

У меня возникли трудности с отображением фоновых изображений для контейнеров содержимого, и я пробовал много решений, подобных другим, опубликованным здесь. Я установил относительный путь в файле CSS, установил его как стиль на странице aspx, я хотел, чтобы фон отображался - ничего не сработало. Я попробовал решение Марселя Попеску, но оно все равно не сработало.

Мне удалось заставить его работать после сочетания решения Марселя и проб и ошибок. Я вставил код в web.config, вставил строку text / css в свой файл CSS, но я полностью удалил свойство background в файле CSS и установил его как стиль в контейнере содержимого на странице aspx. Я хотел, чтобы фон отображать.

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

-4
ответ дан 28 November 2019 в 21:47
поделиться

Решение Марселя Попеску использует Request.ApplicationPath в файле css.

Никогда не используйте Request.ApplicationPath - это зло! Возвращает разные результаты в зависимости от пути!

Вместо этого используйте следующее.

background-image: url(<%= Page.ResolveUrl("~/images/bg_content.gif") %>);
3
ответ дан 28 November 2019 в 21:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: