ResolveUrl, ovvermo, come risolvere un sacco di problemi con gli usercontrol...

di Andrea Zani, in .NET,

Scenario: in un nostro sito abbiamo un usercontrol che inserisce o imposta determinate immagini o link all'interno della pagina. Questo user control lo utilizziamo all'interno delle pagine del medesimo sito, ma è evidente che, nel caso includessimo tale usercontrol all'interno di una pagina in una sottodirectory, sia le immagini che i link punterebbero a url inesistenti.

Ipotizziamo di avere un sito con questa struttura:

root
-> Directory Images
-> Directory Information
altrapagina.aspx
default.aspx

titolo.ascx

La pagina default.aspx include l'user-control titolo.ascx. All'interno di esso il semplice codice:

<img src="images/titolo.gif" />
<a href="altrapagina.aspx">Altra pagina</a>

Inserita nella pagina principale l'immagine sarà visualizzata in modo corretto e il link punterà alla pagina corretta, ma se includessimo tale user-control in una pagina Asp.Net all'interno della directory Information, il client cercherebbe l'immagine e i link nella cartella:

information/images/titolo.gif
information/altrapagina.aspx

che ovviamente non esistono. Per risolvere utilizziamo, come già detto, la funzione static RersolveUrl. Vediamo come. L'user-control lo possiamo modificare in questo modo:

<script runat="server" language="c#">
void Page_Load()
{
string immagine=ResolveUrl("images/titolo.gif");
string link=ResolveUrl("altrapagina.aspx");
titolo.Src=immagine;
link.HRef=link;
}

</script>
<img id="titolo" runat="server" />
<a id="link" runat="server">Altra pagina</a>

Per risolvere il problema in maniera più semplice e elegante, possiamo utilizzare direttamente i webcontrol che calcoleranno per noi il giusto url:

<asp:image imageurl="images/titolo.gif" id="immagine" runat="server" />
<asp:hyperlink navigateurl="altrapagina.aspx" id="link" runat="server">Altra pagina</a>

Comodo, non è vero?

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese