Расположение библиотеки jQuery на сервер по-другому нужно ссылаться - PullRequest
4 голосов
/ 08 апреля 2009

У меня есть приложение ASP.NET MVC, которое использует jQuery. Чтобы загрузить библиотеки js, я ссылаюсь на них так:

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

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

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

Внесение этого изменения позволяет работать локально и на сервере, но предупреждает, что файл не найден. Итак, у меня есть пара вопросов:

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

Я знаю, что ответом на вопрос №2 является хранение библиотек по какому-то известному абсолютному пути, но я пока не готов это сделать.

Ответы [ 4 ]

6 голосов
/ 08 апреля 2009

Попробуйте это:

<script type="text/javascript" src='<%= Url.Content("~/Scripts/jquery-1.3.2.min.js") %>'></script>

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

<%= Html.Javascript( Url.Content( "~/Scripts/jquery-1.3.2.min.js" )) %>

Добавьте следующее, чтобы получить intellisense. Это требует относительного пути к работе, но исключается во время выполнения, потому что условие (всегда) не выполняется.

<% if (false) { %>
     <script type="text/javascript" src="../../Scripts/jquery-1.3.2.vsdoc.js"></script>
<% } %>
1 голос
/ 08 апреля 2009

Как говорит Эндрю, ваша структура каталогов совершенно иная. Рассматривали ли вы использование библиотеки загрузки Google для загрузки Jquery для вас из шкафа для пользователя?

1 голос
/ 08 апреля 2009

Вы пробовали ссылаться на файл из корневого URL? То есть вместо "../../", который должен сканировать директой, используйте "/Content/Scripts/jquery-1.3.2.min.js". Это не соответствует вашей структуре каталогов.

Вам также следует рассмотреть возможность использования Google для загрузки jquery:

http://code.google.com/apis/ajaxlibs/

Вы получите намного лучшее время загрузки.

Mike

1 голос
/ 08 апреля 2009

Причина, по которой ваш код работает локально, заключается в том, что ваша структура локального каталога отличается от структуры вашего производственного каталога.

При этом я считаю, что абсолютный путь к любым внешним ресурсам (javascript, изображениям и таблицам стилей) является лучшим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...