1

我正在尝试使用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">&</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();
4

1 回答 1

4

试试看:

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方法。

于 2016-07-24T09:50:56.623 回答