7

Я хочу полностью понять, как использовать относительный и абсолютный 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

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

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

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

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

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

Что касается примера вы вывесили

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

приведенный выше код будет оказывать сервера физический путь (например - C: \ Inetpub \ Wwwroot \ MySite \ образы \ GIF \ arrow.png», который означает меньше на стороне клиента,

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

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

чтобы ссылаться на ресурсы с Javascript, вы можете хотеть рассмотреть один уровень folde rs для унификации путей доступа.например:

  • Страницы
  • JS
  • Pix
  • и т.д ...

Для более подробной информации посетите asp.net web site paths