Metatag显示为html ouptout(aspx页面)

时间:2012-05-02 14:47:19

标签: asp.net html meta-tags

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输出。

更新

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

1 个答案:

答案 0 :(得分: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];