2016-07-24 17 views
0

Ich versuche, eine einfache HTML-Webseite mit C# und HTMLTextWriter zur Ausgabe an ein WebBrower Objekt zu machen, aber Probleme habe den <meta> Tag in meiner HTML Ausgabe zu machen.Schreiben einen <meta>-Tag mit Htmltextwriter in C# Ausgabe

Was ich erwarte ausgegeben werden ..

<!DOCTYPE html> 
<html> 

    <head> 
    <meta charset="UTF-8"> 
    <title>My Website</title> 
    </head> 

    <body> 
    <h1>Hello World!</h1> 
    </body> 

</html> 

Was derzeit ausgegeben wird ..

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="UTF-8"> 
    </meta charset="UTF-8"><title> 
     My Website 
    </title> 
    </head><body> 
    <h1> 
     Hello World! 
    </h1> 
    </body> 
</html> 

Beachten Sie, wie die <meta> Tag ausgegeben als <meta charset="UTF-8"> ist & </meta charset="UTF-8"> statt nur <meta charset="UTF-8">.

Was kann ich tun, um dieses Problem zu beheben?

Hier ist der Code ich verwende ..

var sw = new StringWriter(); 
using (var writer = new HtmlTextWriter(sw)) { 
    writer.RenderBeginTag("!DOCTYPE html"); 
    writer.RenderBeginTag(HtmlTextWriterTag.Html); 
     writer.RenderBeginTag(HtmlTextWriterTag.Head); 
      writer.RenderBeginTag("meta charset=\"UTF-8\""); 
      writer.RenderEndTag(); 
      writer.RenderBeginTag(HtmlTextWriterTag.Title); 
       writer.Write("SIT323 - My Website"); 
      writer.RenderEndTag(); 
     writer.RenderEndTag(); 
     writer.RenderBeginTag(HtmlTextWriterTag.Body); 
      writer.RenderBeginTag(HtmlTextWriterTag.H1); 
       writer.Write("Hello World!"); 
      writer.RenderEndTag(); 
     writer.RenderEndTag(); 
    writer.RenderEndTag(); 
}; 
return sw.ToString(); 

Antwort

3

Probieren Sie es aus:

writer.AddAttribute("charset", "UTF-8"); 
writer.RenderBeginTag(HtmlTextWriterTag.Meta); 
// Other needed methods... 
writer.RenderEndTag(); 

Ergebnis:

<meta charset="UTF-8"> 

Das Codierungsmuster Auszeichnungselemente für das Rendering ist wie folgt:

  1. Verwenden der AddAttribute Verfahren zum Element alle Attribute hinzuzufügen.

  2. Verwenden Sie die Methode RenderBeginTag.

  3. Verwenden Sie andere Methoden nach Bedarf, um den Inhalt zwischen den öffnenden und schließenden Tags des Elements zu finden.

  4. Verwenden Sie die Methode RenderEndTag.

+0

Perfekt! Vielen Dank. – TheAuzzieJesus

+0

@TheAuzzieJesus, sehen Sie sich bitte erneut den Antwortcode an. Notic you ** sollte ** 'RenderEndTag()' nach 'RenderBeginTag (...)' verwenden. In den anderen Worten sollte man nach jedem 'RenderBeginTag (...)' endlich 'RenderEndTag()' verwenden. Sie können bei Bedarf andere Methoden verwenden. – RAM

+0

Danke, ich habe es glücklicherweise durch Versuch und Irrtum herausgefunden. – TheAuzzieJesus