在C#问题中使用HTMLTextWriter编写<meta />标记

时间:2016-07-24 09:37:44

标签: c# html asp.net meta htmltextwriter

我正在尝试使用C#HTMLTextWriter呈现基本HTML网页以输出到WebBrower对象,但在我的<meta>标记中呈现问题时出现问题HTML输出。

我期待输出的内容..

<!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">&amp; </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();

1 个答案:

答案 0 :(得分:3)

试一试:

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

结果:

<meta charset="UTF-8">

渲染标记元素的编码模式如下:

  1. 使用 AddAttribute 方法向元素添加任何属性。

  2. 使用 RenderBeginTag 方法。

  3. 根据需要使用其他方法来呈现在元素的开始和结束标记之间找到的内容。

  4. 使用 RenderEndTag 方法。

相关问题