Подтвердить что ты не робот

Недостаток относительного пути CSS и Javascript в ASP.NET MVC

На этой странице работают мои 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 просмотра бывает.

ДОПОЛНЕНИЕ:

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

<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:

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

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

Ответ 1

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

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

Ответ 2

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

/Content/site.css

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

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

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

Ответ 3

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

Ответ 4

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

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

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

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

Ответ 5

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

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