【问题标题】:Writing a <meta> tag using HTMLTextWriter in C# issue在 C# 问题中使用 HTMLTextWriter 编写 <meta> 标记
【发布时间】:2016-11-27 18:50:06
【问题描述】:

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

我期望输出的内容..

<!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>

注意&lt;meta&gt; 标签是如何输出为&lt;meta charset="UTF-8"&gt;&lt;/meta charset="UTF-8"&gt; 而不仅仅是&lt;meta charset="UTF-8"&gt;

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

这是我正在使用的代码..

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

【问题讨论】:

    标签: c# html asp.net meta htmltextwriter


    【解决方案1】:

    试试看:

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

    【讨论】:

    • 完美!谢谢。
    • @TheAuzzieJesus,请再看一下答案代码。请注意,您应该RenderBeginTag(...) 之后使用 RenderEndTag()。换句话说,您最终应该在每个RenderBeginTag(...) 之后使用RenderEndTag()。虽然它们之间可以根据需要有其他方法。
    • 谢谢,幸运的是我通过反复试验设法弄明白了。
    • @RAM 你真的尝试过你的例子吗?对我来说,它给了我 ,(自动关闭),而 meta 不需要 />,它应该只是一个关闭 >
    • @joedotnot,所有浏览器都支持自关闭元标记,但您可以使用writer.RenderBeginTag(@"meta charset=""utf-8"""); 代替它。
    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    相关资源
    最近更新 更多