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

Writing a <meta> tag using HTMLTextWriter in C# issue

我正在尝试使用 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>

Notice how the <meta> tag is being output as <meta charset="UTF-8"> & </meta charset="UTF-8"> instead of just <meta charset="UTF-8">.

What can I do to correct this issue?

这是我使用的代码..

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

试一试:

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