Saturday, December 15, 2007

MasterPage e Url

. Saturday, December 15, 2007

In determinati scenari ci si può imbattare in un "particolare problema" che interessa le masterpage e gli url relativi.
In pratica se la masterpage e la pagina dei contenuti(aspx) si trovano nella stessa folder un codice come il seguente:

   1: <IMG SRC="../test/images/in1.JPG" />
funziona perfettamente.
Ma supponiamo di avere una struttura di cartelle simile a quella indicata nell'immagine qui in basso:
masterpage1 in cui la pagina dei contenuti si trova in una folder diversa da quella della masterpage, in tal caso l'immagine non viene visualizzata.
Questo perchè il browser cerca l'immagine in un cartella superiore:
http://localhost:1146/WebTestPort/folderTest/test/images/in1.JPG
Per evitare ciò si può procedere in diversi modi, il più semplice è quello di indicare un url assoluto alla risorsa:


   1: <IMG SRC="http://localhost:1146/WebTestPort/test/images/in1.JPG" />
Oppure si può sostituire il controllo HTML image con un controllo server-side:


   1: <asp:Image ID="img" runat="server" ImageUrl="../test/images/in1.JPG" />
In quest'ultimo caso interviene ASP.NET a risolvere il tutto, "rimappando" a runtime(URL rebasing).
Altro modo per risolvere il problema è l'uso di un nuovo metodo messo a disposizione dal Framework 2.0: ResolveClientUrl per restituire un url idoneo, utile al client per accedere alle risorse del server web(immagini, link ad altre pagine):


   1: <IMG src="<%= ResolveClientUrl("../test/images/in1.JPG")%>" />

0 commenti:

Post a Comment