2016-07-24 53 views
0

我试图渲染使用C#HTMLTextWriter输出到WebBrower对象一个基本的HTML网页使用的HtmlTextWriter一个 标签,但我有渲染<meta>标签在我HTML输出问题。写在C#中的问题

什么我期待输出..

<!DOCTYPE html> 
<html> 

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

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

</html> 

什么是当前输出..

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

通知的<meta>标签是如何被输出作为<meta charset="UTF-8"> & </meta charset="UTF-8">而不仅仅是<meta charset="UTF-8">

我能做些什么来纠正这个问题?

这里是我使用的代码..

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(); 

回答

3

试试:

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

结果:

<meta charset="UTF-8"> 

用于呈现的标记元素的编码模式如下:

  1. 使用的addAttribute方法的任何属性添加到元件。使用RenderBeginTag方法。

  2. 使用其他方法需要渲染元素的开始和结束标记之间找到的内容。使用RenderEndTag方法。

+0

完美!谢谢。 – TheAuzzieJesus

+0

@TheAuzzieJesus,请再次查看答案。 Notic你**应该在RenderBeginTag(...)之后使用'RenderEndTag()'。换句话说,你最终应该在每个'RenderBeginTag(...)'之后使用'RenderEndTag()'。尽管你可以在他们之间有其他需要的方法。 – RAM

+0

谢谢,我设法通过试错来幸运地解决问题。 – TheAuzzieJesus