Precisei esses dias encontrar o caminho relativo de um recurso em uma página web. Pensei "o .Net framework já faz isso". Me lembrei do controle Image, que permite utilizar o til (~) para indicar a raiz e portanto o caminho relativo. Com ele, uma imagem na pasta "img" chamada imagem.gif ficaria com a string de caminho "~/img/imagem.gif", seria resolvida para "img/imagem.gif" no caso de uma página chamando da raiz e "../img/imagem.gif" caso a página de chamada morasse em um diretório descendente.

Fui ao Reflector. Descobri que o atributo/propriedade ImageUrl que indica o caminho relativo da imagem é realmente "traduzido" para caminho relativo. O método responsável pela tradução é o ResolveClientUrl, da classe System.Web.UI.Control.

Para utilizar o método, basta colocar o caminho a ser descoberto. Em uma página ASPX, por exemplo, onde você quer descobrir o caminho relativo de um arquivo flash, a tag param ficaria assim:

        <param name="movie" value="<% =Me.ResolveClientUrl("~/flash/banner.swf") %>" />

Isso é útil especialmente para o flash, porque não há um controle nativo no flash, e se você usar uma master page vai ter problemas caso ela seja utilizada por alguma página aspx em um sub diretório. Imagens são mais fáceis, traduzem sozinhas.

 

Simples e prático, mas não achei muita documentação por aí... Analisei também a implementação interna e percebi que a Microsoft utiliza por debaixo dos panos a classe System.Web.Util.UrlPath, mas ela é marcada como "Friend"-VB/"internal"-C#. Essa classe tem muitos métodos interessantes, mas estão todos escondidos de nós, que não estamos codificando o .Net Framework. Porque será?

Enfim, problema resolvido e em pouco tempo. Nada como um framework bem desenvolvido.


Postado na(s) categoria(s) ASP.Net pelo Giovanni Bassi em 27 de maio de 2008 às 04:00 | Tags:

Ninguém avaliou. Dê sua nota!

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Quem é Giovanni Bassi

Giovanni Bassi Sou uma pessoa apaixonada por tecnologia e especificamente por .Net. Sou consultor independente especialista em .Net, focado em arquitetura e melhores práticas. Tenho dezenas de artigos publicados na .Net Magazine, revista da qual sou editor técnico. Ministro palestras e cursos de vez em quando, e quando dá tempo eu respiro um pouco. Mais detalhes nesta página.

Calendário

«  maio 2008  »
seteququsedo
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
Ver detalhamento de posts no calendário

Postagens recentes

Comentários recentes

Disclaimer / Aviso
As opiniões colocadas neste blog são minhas e pessoais e não expressam necessariamente as opiniões de meus empregadores, pareceiros e amigos. Da mesma forma, os comentários feitos por leitores do blog não expressam a minha opinião.

© Copyright 2008 .Net Unplugged
Sign in