Путаница относительного пути CSS и Javascript в ASP.NET MVC - PullRequest
21 голосов
/ 12 января 2009

Мои пути javascript работают на этой странице: http://localhost:53049/

Но не на этой странице: http://localhost:53049/Home/Messages

Причина в том, что относительные пути разные, первый требует ("js / ..."), а второй требует ("../../js/...").

Я включил свой JavaScript в свой файл Site.Master:

<script type="text/javascript" src="js/jquery.jqGrid.js"></script>
<script type="text/javascript" src="~/js/jquery.jqGrid.js"></script>
<script type="text/javascript" src="<%= this.ResolveClientUrl("~/Scripts/jquery-1.2.6.js") %>"></script>

Как мне обойти это безумие относительно относительного пути, то есть, как лучше всего использовать ASP.NET MVC для задания путей CSS / Javascript в Site.Master, чтобы они работали для каждого представления независимо от того, насколько глубоким является URL этого представления бывает.

ДОПОЛНЕНИЕ:

Кажется, что для представления индекса любой путь будет работать, как ни странно:

<script type="text/javascript" src="/Scripts/jquery-1.2.6.js"></script>
<script type="text/javascript" src="../../Scripts/jquery-1.2.6.js"></script>
<script type="text/javascript" src="../../../Scripts/jquery-1.2.6.js"></script>

Но для любых других страниц (страниц с более глубоким URL) ни одна из них не работает.

Что здесь происходит? Как мы можем установить путь Javascript один раз в Site.Master, и они работают для всех страниц?

ADDENUM II:

Оказалось, что это проблема только с файлом javgcript jqgrid (не файлом jquery), очевидно, внутри этого файла он ссылается на другие файлы javascript и запутывается:

<script type="text/javascript" src="<%= Url.Content ("~/js/jquery.jqGrid.js") %>"></script>

Ответы [ 5 ]

15 голосов
/ 12 января 2009

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

Примеры можно найти здесь .

13 голосов
/ 29 апреля 2009

Относительно путей, используемых в документах CSS:

/ Содержание / site.css

Body {background-image:url('background.jpg');}

Относительные пути в документах CSS относятся к документу CSS, а не к отображаемому документу.

Эта информация избавила меня от головной боли.

4 голосов
/ 12 января 2009

Попробуйте настроить javascript для использования прямой косой черты в начале, например "/js/jquery.jqGrid.js". Это позволит им использовать корневой домен вместо относительного пути.

1 голос
/ 20 апреля 2013

Вам нужно добавить runat="server" и указать абсолютный путь следующим образом:

<script type="text/javascript" runat="server" src="~/js/jquery.jqGrid.js"></script>]

1 голос
/ 12 мая 2009

Решение для jqGrid: откройте файл jquery.jqGrid.js и найдите строку:

var pathtojsfiles = "js/"; // need to be ajusted

Как говорится в комментарии, вам нужно отредактировать этот путь, например, для типичного приложения ASP.NET MVC

var pathtojsfiles = "/Scripts/js/"; // need to be ajusted
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...