Базовый URL на Ведущих Страницах ASP.net с виртуальными каталогами

У меня есть ведущая страница ASP.net. В этом ведущем устройстве у меня есть все свои определенные файлы CSS и JavaScript. У меня также есть несколько изображений и несколько кнопок и гиперссылок.

Все URL все объявляются как родственник т.е. "/scripts/ian.js"

Все хорошо работает, если этот сайт является корневым веб-сайтом, но мне нужен он для работы в виртуальном каталоге.

Моя проблема состоит в том, когда я помещаю этот веб-сайт в виртуальный каталог под корневым сайтом, все мои ссылки указывают на корневой сайт. таким образом, мои ссылки указывают на www.root.com/scripts/ian.js, но это должно указывать на www.root.com/virtualDir/scripts/ian.js

Я думал, что Основной тег Href в заголовке поможет, но до сих пор это, кажется, не помогает в так или иначе. Все ссылки все еще указывают на корневой веб-сайт, когда я нависаю над ними.

То, что я хотел бы, является единственной установкой или в IIS или в файле конфигурации, что я могу установить корневой URL и любое изображение, сценарий или связаться или на основной странице или на странице содержания, указал бы на правильное место.

Любые предложения или идеи приветствуются.

Спасибо

5
задан SetiSeeker 16 March 2010 в 08:27
поделиться

3 ответа

Все URL-адреса объявлены как относительные, т. Е. "/Scripts/ian.js"

. Кажется, это абсолютные URL-адреса, которые вы используете, а не относительные URL-адреса. , вероятно, поэтому тег не дает желаемого эффекта:

Этот атрибут определяет абсолютный URI , который действует как базовый URI для {{1} } разрешение относительных URI.

- из http://www.w3.org/TR/html401/struct/links.html#h-12.4

Вы можете попробовать удалить начальный '/' из URL-адресов, чтобы проверить, что работает?

В противном случае я обычно использую ResolveClientUrl , чтобы обойти подобные проблемы, которые вы бы использовали так же, как другие предлагали использовать ResolveUrl :

<script type="text/javascript" src="<%= ResolveClientUrl("~/path/to/js") %>"></script>
...
<img src="<%= ResolveClientUrl("~/path/to/img") %>" alt="..." />

Надеюсь, это поможет.

7
ответ дан 13 December 2019 в 19:24
поделиться

Используйте тильду (~) в вашей ссылке (например, ~ / scrips / ian.js) ... посмотрите, работает ли это Для ссылок попробуйте Page.ResolveUrl на странице .aspx.

0
ответ дан 13 December 2019 в 19:24
поделиться

Большинство тегов, включая обычные HTML-теги, такие как , и т. Д., Могут использовать ~ / в качестве корневого пути приложения, если установлен атрибут * 'runat = "server"'.

например.

<img src="~/images/test.png" runat="server" />

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

Это не работает должным образом для