2012-04-11 4 views
0

Ich versuche, komplexe Liste von Elementen mit ListView zu erstellen. Für jedes Element muss ich so etwas wie diesesString-Verkettung oder HtmlGenericControl HTML-Steuerelemente?

<div> 
    <ul> 
    <li>foo<li> 
    <li>bar<li> 
    .... Dynamic count of <li> 
    <ul> 
    <span>Some dynamic text</span> 
    .. bunch of other dynamicly generated html 
</div> 

erstellen Meine Frage ist, was eine bessere Art und Weise ist die html.By mit String-Verkettung wie diese

StringBuilder sb = new StringBuilder(); 
sb.Append("<div>"); 
....... 
sb.Append("</div>") 

oder mit Htmlgenericcontrol wie folgt zu generieren:

HtmlGenericControl htmlItem = new HtmlGenericControl("div"); 
    .... 

    using(TextWriter textWriter = new StringWriter()) 
     using(HtmlTextWriter htmlWriter = new HtmlTextWriter(textWriter)) 
     { 
      HtmlGenericControl htmlItem = null; 

      CreateMenuItem(menuItem, 0, null); 

      htmlItem.RenderControl(htmlWriter); 

      return textWriter.ToString(); 
     } 
+1

'string.Format' oder' StringBuilder.AppendFormat' sind hier oft nützlich, wenn Sie beispielsweise eine Spanne mit dynamischem Text haben, können Sie nur noch 'sb.AppendFormat (" {0}", getSpanContent()) Es macht größtenteils statische XML im Code viel lesbarer. Wenn es eine Mehrfachzeile ist, können Sie auch '@" "' für eine multi = Zeilenfolge von HTML mit vielen '{}' Einfügungen für Daten verwenden. – Servy

Antwort

2

Ich bevorzuge diesen Weg, weil dies gibt mir viel mehr Lesbarkeit. Wenn ich mir das ansehe, kann ich mir leicht vorstellen, wie mein Output aussehen wird.

StringBuilder sb = new StringBuilder(); 
sb.Append("<div>"); 
sb.Append("<ul>"); 
sb.Append("<li>Item1</li>"); 
sb.Append("<li>Item2</li>"); 
sb.Append("<li>Item3</li>"); 
sb.Append("</ul>"); 
sb.Append("</div>"); 
2

Htmltextwriter ist gut, weil:

  1. Htmltextwriter die sauberste und die Mark-up ist ist schön eingekerbt, wenn es gemacht wird. Es gibt Auswirkungen auf die Leistung, da HtmlTextWriter direkt in den Ausgabestream schreibt.
  2. Htmltextwriter unterstützt HTML-Codierung

String nicht in den Ausgabestream schreibt bis ToString auf sie automatisch aufgerufen wird.

Verwandte Themen