Ответ 1
Вы также можете использовать вызов метода Url.Content, чтобы убедиться, что пути установлены правильно.
Примеры можно найти здесь.
На этой странице работают мои 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>
Вы также можете использовать вызов метода Url.Content, чтобы убедиться, что пути установлены правильно.
Примеры можно найти здесь.
Относительно путей, используемых в документах CSS:
/Content/site.css
Body {background-image:url('background.jpg');}
Относительные пути в документах CSS связаны с документом CSS, а не с отображаемым документом.
Эта информация спасла меня от головной боли.
Попробуйте установить javascript для использования косой черты в начале, например "/js/jquery.jqGrid.js". Это позволит им использовать корневой домен вместо относительного пути.
Решение для jqGrid: откройте файл jquery.jqGrid.js и найдите строку:
var pathtojsfiles = "js/"; // need to be ajusted
Как говорится в комментарии, вам нужно отредактировать этот путь, например. для обычного приложения ASP.NET MVC,
var pathtojsfiles = "/Scripts/js/"; // need to be ajusted
Вам нужно добавить runat="server"
и указать абсолютный путь следующим образом:
<script type="text/javascript" runat="server" src="~/js/jquery.jqGrid.js"></script>]