2010-10-18 11 views
11

Chcę dodać atrybut href do elementu łącza. To jest mój kod:Jak poprawnie dodawać atrybuty przy renderowaniu za pomocą 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(); 
} 
} 

To świadczy jak:

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

to, czego się spodziewałem.

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

Co poszło nie tak i jak mogę rozwiązać ten problem?

Proszę nie odpowiadać, że mógłbym złożyć łańcuch w jakiś inny sposób. Chcę wiedzieć, w jaki sposób mogę to osiągnąć przy użyciu znacznika HtmlTextWriter

Odpowiedz

30

Podczas korzystania z HtmlTextWriter, należy dodać atrybuty PRZED dodaniem nazwy znacznika. Tak:

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 

To czyni tak:

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

Dzięki, nie myślałem o tym, ale to ma sens;) – citronas

+13

prawda? Nie sądzę, żeby to miało jakikolwiek sens! – roryok

+0

@roryok To ma (sens, to znaczy). Metoda RenderBeginTag faktycznie renderuje znacznik, więc późniejsze określenie atrybutów jest bezużyteczne. –

Powiązane problemy