2010-10-18 11 views
11

Quiero agregar el atributo href a un elemento de enlace. Este es mi código:¿Cómo agregar atributos correctamente al renderizar con 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(); 
} 
} 

Se hace como:

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

Esto es lo que esperaba.

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

¿Qué salió mal y cómo puedo solucionar este problema?

No responda que podría ensamblar la cuerda de alguna otra manera. Quiero saber cómo puedo lograr esto con HtmlTextWriter

Respuesta

30

Al usar HtmlTextWriter, debe agregar los atributos ANTES de agregar el nombre de la etiqueta. De esta manera:

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 

va a proporcionar de esta manera:

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

Gracias, no han pensado en ello, pero tiene sentido;) – citronas

+13

¿verdad? ¡No creo que tenga sentido en absoluto! – roryok

+0

@roryok Sí (tiene sentido, eso es). El método RenderBeginTag realmente representa la etiqueta, por lo que especificar los atributos posteriormente es inútil. –

Cuestiones relacionadas