2010-10-18 3 views
11

Desidero aggiungere l'attributo href a un elemento di collegamento. Questo è il mio codice:Come aggiungere gli attributi correttamente al rendering con un HtmlTextWriter?

System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder(); 
using (System.IO.StringWriter stringWriter = new System.IO.StringWriter(stringBuilder)) 
{ 
using (System.Web.UI.HtmlTextWriter htmlTextWriter = new System.Web.UI.HtmlTextWriter(stringWriter)) 
{ 

    htmlTextWriter.RenderBeginTag(HtmlTextWriterTag.Ul); 
    htmlTextWriter.RenderBeginTag(HtmlTextWriterTag.Li); 
    htmlTextWriter.RenderBeginTag(HtmlTextWriterTag.A); 
    htmlTextWriter.AddAttribute(HtmlTextWriterAttribute.Href, "http://www.google.de"); 
    htmlTextWriter.Write("Google"); 
    htmlTextWriter.RenderEndTag(); 
    htmlTextWriter.RenderEndTag(); 


    htmlTextWriter.RenderEndTag(); 
} 
} 

Rende come:

<ul> 
<li><a>Google</a></li> 
</ul> 

Questo è quello che mi aspettavo.

<ul> 
<li><a href="http://www.google.de">Google</a></li> 
</ul> 

Cosa non ha funzionato e come posso risolvere questo problema?

Si prega di non rispondere che potrei assemblare la stringa in qualche altro modo. Voglio sapere come ottenerlo con HtmlTextWriter

risposta

30

Quando si utilizza HtmlTextWriter, è necessario aggiungere gli attributi PRIMA di aggiungere il nome del tag. Come questo:

htmlTextWriter.RenderBeginTag(HtmlTextWriterTag.Ul); 
    htmlTextWriter.RenderBeginTag(HtmlTextWriterTag.Li); 

    htmlTextWriter.AddAttribute(HtmlTextWriterAttribute.Href, "http://www.google.de"); 
    htmlTextWriter.RenderBeginTag(HtmlTextWriterTag.A); 
    htmlTextWriter.Write("Google"); 
    htmlTextWriter.RenderEndTag(); //A 

    htmlTextWriter.RenderEndTag(); //LI 
    htmlTextWriter.RenderEndTag(); //UL 

Si renderà così:

<ul> 
    <li><a href="http://www.google.de">Google</a></li> 
</ul> 
+0

Grazie, non hanno pensato di esso, ma ha senso;) – citronas

+13

lo fa? Non penso che abbia senso! – roryok

+0

@roryok Lo fa (ha senso, cioè). Il metodo RenderBeginTag esegue effettivamente il rendering del tag, quindi la specifica degli attributi in seguito è inutile. –