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



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

我期望输出的内容..

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

试试看:

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

相关内容

  • 没有找到相关文章

最新更新