Pergunta

Quero entender completamente como usar endereços de URL relativos e absolutos em arquivos estáticos e dinâmicos.

~  : 
/  :
.. : 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

Este exemplo é fácil quando você está trabalhando sem diretório virtual.Mas estou trabalhando no diretório virtual.

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

Quero simular um site abaixo, como o meu projeto que está funcionando em diretório virtual.

Estas são minhas pastas aspx e 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

Estes são meus arquivos JS (que serão usados ​​tanto com os arquivos aspx quanto com os arquivos ascx):

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

este é o endereço estático da minha página da web (quero mostrar algumas fotos e executar algumas funções js):

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

esta é minha pasta de imagens

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

se eu quiser escrever o link do arquivo de imagem no meu arquivo ASPX, devo escrever

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

Mas se eu quiser escrever o caminho codificado ou a partir de um arquivo javascript, que tipo de endereço de URL deve ser?

Foi útil?

Solução

O operador ~ é reconhecido pelo asp.net apenas para controles de servidor e no código do servidor.Você não pode usar o operador ~ para elementos do cliente.

As referências de caminho absolutas e relativas em um controle de servidor têm as seguintes desvantagens:

•Caminhos absolutos não são portáveis ​​entre aplicativos.Se você mover o aplicativo para o qual o caminho absoluto aponta, os links serão quebrados.

•Caminhos relativos no estilo dos elementos do cliente podem ser difíceis de manter se você mover recursos ou páginas para pastas diferentes.

Para superar essas desvantagens, o ASP.NET inclui o operador raiz do aplicativo Web (~), que você pode usar ao especificar um caminho nos controles do servidor.ASP.NET resolve o operador ~ para a raiz do aplicativo atual.Você pode usar o operador ~ em conjunto com pastas para especificar um caminho baseado na raiz atual.

Quanto ao exemplo que você postou

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

o código acima renderizará o caminho físico do servidor (por exemplo - c:\inetpub\wwwroot\mysite\images\gif\arrow.png" que significa menos no lado do cliente,

você deve usar isso para o caminho relativo correto do cliente:

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

Para fazer referência a recursos de javascript, você pode considerar uma estrutura de pastas de um nível para unificar os caminhos de acesso.por exemplo:

  • Páginas
  • JS
  • Pix
  • etc...

Para mais detalhes visite caminhos do site asp.net

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top