Включить файл JavaScript с маршрутизируемого URL

#javascript #asp.net #url-routing

#javascript #asp.net #url-маршрутизация

Вопрос:

У меня есть главная страница со следующими строками внутри моих <head> тегов.

 <link href="Styles/Style.css" rel="stylesheet" type="text/css" />
<script src="Scripts/navmenu.js" type="text/javascript"></script>
  

Когда я перехожу на страницу, использующую маршрутизацию URL, приведенные выше строки генерируют следующий HTML.

 <link href="../../Styles/Style.css" rel="stylesheet" type="text/css" />
<script src="Scripts/navmenu.js" type="text/javascript"></script>
  

На основе отображенного URL ссылка на таблицу стилей верна. Как я могу заставить ссылку на скрипт также быть правильной?

P.S. Я попытался установить runat="server" в ссылке на скрипт, но это, похоже, просто сбивает с толку ASP.NET . Не удается скомпилировать весь проект на основе фиктивных ошибок, о которых сообщается в моем файле JavaScript. (В противном случае файл javascript работает нормально.)

Комментарии:

1. Ну, абсолютные URL-адреса будут работать только в одном месте. Например, я не смог протестировать их на своей машине разработки.

2. Я действительно не понимаю. Если я использую абсолютные URL-адреса, которые ссылаются на мой веб-сервер, и я тестирую на своей машине разработки, тогда я бы не тестировал файлы, которые я разрабатываю. Они будут включать неправильные файлы. (Моя машина разработки — это другой компьютер, чем мой веб-сервер.)

3. Извините. Боже, мне нужно это проверить. По моему опыту, «/» не работает на моем компьютере разработчика. Я сейчас не на своем компьютере разработчика, но проверю это в следующий раз, когда буду.

Ответ №1:

Похоже, лучший ответ таков:

 <link href="Styles/Style.css" rel="stylesheet" type="text/css" />
<script src='<%= ResolveClientUrl("~/Scripts/navmenu.js") %>' type="text/javascript"></script>
  

Обратите внимание, что если я использую тег ResolveClientUrl() для таблицы стилей <link> , это не сработает. По-видимому, для этого тега предусмотрена специальная передача.