#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>
, это не сработает. По-видимому, для этого тега предусмотрена специальная передача.