-1
protected override void OnLoad(EventArgs e) {
    base.OnLoad(e);
    Literal lTags = new Literal();
    lTags.Text = "<meta name=\"MetaTagsDemo\" content=\"Meta demo tag\" />";
    this.Header.Controls.Add(lTags);
}

我的 default.aspx.cs 中有上述代码。加载 Default.aspx 页面时,我确实看到控件被添加到部分中,但在页面顶部(页面中的第一行),html 显示为“”。

我在这里做错了什么?

我有另一个名为 Browse.aspx 的页面,其中我具有相同的功能,但此页面不显示 html 输出。

更新

元标签的来源是数据库,整个元标签存储在一个字段中

4

1 回答 1

1

您应该将元标记添加为 html 控件,如下所示:

HtmlMeta tag = new HtmlMeta();
tag.Name = "MetaTagsDemo";
tag.Content = "Meta demo tag";
Page.Header.Controls.Add(tag);

更新:

是的,您应该解析数据库输入,使用 HtmlAgilityPack 这是一项简单的任务,例如:

  HtmlDocument doc = new HtmlDocument();
  doc.LoadHtml("<meta name=\"MetaTagsDemo\" content=\"Meta demo tag\" />");
  foreach (HtmlNode meta in doc.DocumentNode.SelectNodes("//meta"))
  {
    string metaName = meta.Attributes["Name"].Value;
    string content = meta.Attributes["Content"].Value;
    /// do something
  }

更新 2

没有 HtmlAgilityPack,这是一个又快又脏的方法,你应该测试一下

  string meta = "<meta name=\"MetaTagsDemo\" content=\"Meta demo tag\" />";
  string[] splitted = meta.Split('"');
  string metaName = splitted[1];
  string metaContent = splitted[3];
于 2012-05-02T14:57:16.120 回答