Genrazione dinamica di un link

Ho avuto qualche problema per visualizzare l’indirizzo e-mail e l’indirizzo Web all’interno di un repeater, i quali dovevano essere entrambi linkabili.

La prima soluzione a cui ho pensato è stata quella di utilizzare un asp:hyperlink dove la proprietà navigateUrl veniva impostata con l’indirizzo, questa soluzione può andare bene per l’indirizzo del Sito Web ma per l’e-mail non funziona.

Quindi ho pensato di scrivere un metodo che riceve in input due parametri l’indirizzo ed il protocollo e restituisce in output un tag a con la proprietà href impostata secondo i parametri di input.

Ecco il codice con il repeater che effettua la  chiamata:

 

 <asp:Repeater ID="repDealer" runat="server" DataSourceID="odsDealer">
<ItemTemplate>
<p>
<%# Eval("Nomer") %><br />
<%# Eval("Indirizzo") %><br />
<%# Eval("Citta") %><br />
<%# Eval("Provincia") %><br />
<%# Eval("Cap") %><br />
<%# Eval("Telefono") %><br />
<%# Eval("Fax") %><br />
<%# GetUrl(Eval("IndirizzoSitoWeb"), "http://", true)%><br />
<%# GetUrl(Eval("Email"), "mailto:", false) %>
</p>
</ItemTemplate>
</asp:Repeater>

 

Ecco il metodo GetUrl che costruisce il link:

 

protected String GetUrl(object indirizzo, object protocollo, object target)
{
StringBuilder sb = new StringBuilder(String.Empty);
sb.Append("<a href=\"");
sb.Append(protocollo.ToString());
sb.Append(indirizzo.ToString());
sb.Append("\" ");
if ((bool)target)
{ sb.Append(" target=\"_blank\" "); }
sb.Append(">");
sb.Append(indirizzo.ToString());
sb.Append("</a>");
return sb.ToString();
}
Published Friday, July 10, 2009 6:43 AM by MADIL
Filed under: ,
Powered by Community Server (Commercial Edition), by Telligent Systems