получение базового URL корня веб-сайта (абсолютный/относительный URL)

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

~  : 
/  :
.. : in a relative URL indicates the parent directory
 . : refers to the current directory
 / : always replaces the entire pathname of the base URL
// : always replaces everything from the hostname onwards

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

Relative URI          Absolute URI
about.html            http://WebReference.com/html/about.html
tutorial1/            http://WebReference.com/html/tutorial1/
tutorial1/2.html      http://WebReference.com/html/tutorial1/2.html
/                     http://WebReference.com/
//www.internet.com/   http://www.internet.com/
/experts/             http://WebReference.com/experts/
../                   http://WebReference.com/
../experts/           http://WebReference.com/experts/
../../../             http://WebReference.com/
./                    http://WebReference.com/html/
./about.html          http://WebReference.com/html/about.html

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

Это мой aspx и ascx папка

http://hostAddress:port/virtualDirectory/MainSite/ASPX/default.aspx
http://hostAddress:port/virtualDirectory/MainSite/ASCX/UserCtrl/login.ascx

http://hostAddress:port/virtualDirectory/AdminSite/ASPX/ASCX/default.aspx

Это мои Файлы JS (который будет использованием и с aspx и с ascx файлами):

http://hostAddress:port/virtualDirectory/MainSite/JavascriptFolder/jsFile.js
http://hostAddress:port/virtualDirectory/AdminSite/JavascriptFolder/jsFile.js

это - мой статический адрес веб-страницы (я хочу показать некоторые изображения и работать в некоторых функциях js):

http://hostAddress:port/virtualDirectory/HTMLFiles/page.html

это - моя папка изображения

http://hostAddress:port/virtualDirectory/Images/PNG/arrow.png
http://hostAddress:port/virtualDirectory/Images/GIF/arrow.png

если я хочу записать и ссылка файла изображения в моем файле ASPX, я должен записать

aspxImgCtrl.ImageUrl = Server.MapPath("~")+"/Images/GIF/arrow.png";

Но если я хочу записать путь, трудно кодированный или из файла JavaScript, каким адресом URL это должно быть?

7
задан 4 revs 30 March 2010 в 12:07
поделиться

1 ответ

Оператор ~ распознается asp.net только для серверных элементов управления и в серверном коде. Вы не можете использовать оператор ~ для клиентских элементов.

Абсолютные и относительные пути в серверном элементе управления имеют следующие недостатки:

• Абсолютные пути не переносятся между приложениями. Если вы переместите приложение, на которое указывает абсолютный путь, ссылки разорвутся.

• Относительные пути в стиле клиентских элементов может быть трудно поддерживать, если вы перемещаете ресурсы или страницы в разные папки.

Чтобы преодолеть эти недостатки, ASP.NET включает корневой оператор веб-приложения (~), который можно использовать при указании пути в серверных элементах управления. ASP.NET разрешает оператор ~ в корень текущего приложения. Вы можете использовать оператор ~ вместе с папками, чтобы указать путь, основанный на текущем корне.

Что касается примера, который вы опубликовали

aspxImgCtrl.ImageUrl = Server.MapPath("~")+"/Images/GIF/arrow.png";

, приведенный выше код отобразит физический путь к серверу (например - c: \ inetpub \ wwwroot \ mysite \ images \ gif \ arrow.png ", что меньше на стороне клиента ,

вы должны использовать это для правильного относительного пути клиента:

aspxImgCtrl.ImageUrl = "~/Images/GIF/arrow.png"; 

Чтобы ссылаться на ресурсы из javascript, вы можете рассмотреть одноуровневую структуру папок для унификации путей доступа, например:

  • Pages
  • JS
  • Pix
  • и т. Д.

Для получения дополнительной информации посетите asp.net пути к веб-сайтам

7
ответ дан 7 December 2019 в 07:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: