Desenvolvimento - Visual Studio

ResolveURL

Nesse artigo abordarei o comando ResolveURL, responsável por resolver os problemas de URL dentro do nosso projeto. Os testes que fiz foi um sucesso usando o projeto do tipo Web Application.

por Mauricio Junior



Caro(a) Leitor(a) hoje eu vou falar sobre o comando responsável por resolver os problemas de URL dentro do nosso projeto. Os testes que fiz foi um sucesso usando o projeto do tipo Web Application.

Muitas vezes, o que acontece em nosso projeto é que, ao referenciar um url dinâmica ~/images/imagem.jpg a página que está fora da raiz do projeto não aparece a imagem, principalmente se a página estiver dentro de duas pastas qualquer.

Se colocar outro endereço dinâmico images/imagem.jpg também não vai aparecer se a página estiver dentro das pastas. Isso tudo em relação ao arquivo .MASTER por exemplo.

Note que na figura 1 eu tenho uma página .aspx que está dentro de duas pastas.

Página dentre de pasta

Figura 1 - Página dentre de pasta

No meu arquivo Site.Master eu preciso mostrar uma imagem, mas o arquivo está na pasta raiz, além de existir outras páginas .aspx na pasta raiz. O meu problema é que nas páginas que estão na raiz funcionam, mas na página que está dentro de pastas não funcionam. O que fazer nestes casos? Listagem 1.

Listagem 1 - Código MasterPage

<div id="body">
<img src="images/teste/twitter.png"/>
</div>

Na página Default.aspx apareceu a imagem perfeitamente, sem qualquer problema referente ao caminho. Figura 2.

Apareceu a imagem

Figura 2 - Apareceu a imagem

O problema maior foi quando acessei a página que está dentro das pastas citadas anteriormente. A imagem não apareceu. Figura 3.

Acessando página dentro da pasta

Figura 3 - Acessando página dentro da pasta.

Note que o endereço da figura 2 e o endereço da figura 3 são diferentes, mas estão dentro do mesmo projeto. Para resolver o problema e para aparecer a imagem, tive que usar o comando ResolveURL. Listagem 2.

Listagem 2 - Colocando o código ResolveURL.

<div id="body">
                
<img src=<%:ResolveUrl("images/teste/twitter.png") %> />
<br />
<img src="images/teste/twitter.png"/>
</div>

Se usar o til ~ antes do endereço da imagem também não aparece no browser. Listagem 3.

Listagem 3 - Colocando til no endereço

<div id="body">
                
<img src=<%:ResolveUrl("images/teste/twitter.png") %> />
<br />
<img src="~/images/teste/twitter.png"/>
</div>

Para resolver o meu problema de visualizar a mesma imagem colocada na página Master do projeto dentro de uma subpasta foi usar o ResolveURL com o endereço relativo da imagem. Listagem 4.

Listagem 4 - Endereço relative

<img src=<%:ResolveUrl("images/teste/twitter.png") %> />

Deixando as duas linhas na Master Page automaticamente apareceu a imagem no primeiro e no segundo não apareceu. Figura 4.

A imagem apareceu

Figura 4 - A imagem apareceu.

Criando outra página dentro da pasta anterior, a imagem permaneceu visível sem qualquer problema. Figura 5.

Página anterior

Figura 5 - Página anterior

Não sei se notou mas, agora no Visual Studio 11 Beta eu usei o : dois pontos dentro do parte HTML. <%: comando %>.

Note que, os endereços das páginas .aspx são diferentes e a imagem apareceu sem se importar com o endereço da página física.

Bom, fico por aqui e qualquer duvida pode entrar em contato.

Mauricio Junior

Mauricio Junior - Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; . Tenho 29 anos e possuo sete livros publicados pela editora Ciência Moderna e sou editor do Linha de Código.
Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A.
Blog:
blog.mauriciojunior.org
Site pessoal: www.mauriciojunior.org