Я хочу полностью понять, как использовать относительный и абсолютный адрес 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 это должно быть?
Оператор ~ распознается 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, вы можете рассмотреть одноуровневую структуру папок для унификации путей доступа, например:
Для получения дополнительной информации посетите asp.net пути к веб-сайтам