在单独的行中的ASP.NET页面中呈现动态MetaTag

时间:2013-04-30 13:17:41

标签: asp.net webforms

当我动态添加元标记时,它们会在一行中呈现。

我如何在单独的行中打破它们

enter image description here

我尝试了以下代码,但这对我不起作用

Page.Title = ds.Tables[0].Rows[0]["Title"].ToString() + " by " + ds.Tables[0].Rows[0]["Author"].ToString();
Page.Controls.Add(new LiteralControl("\n"));
Page.MetaDescription = ds.Tables[0].Rows[0]["Desc"].ToString();
Page.Controls.Add(new LiteralControl("\n"));
Page.MetaKeywords = ds.Tables[0].Rows[0]["Keywords"].ToString();
Page.Controls.Add(new LiteralControl("\n"));

我正在为我的网站使用asp.net网络表单。在这方面的帮助表示赞赏。

3 个答案:

答案 0 :(得分:2)

您尝试添加新行的方式将无法正常工作,因为MetaDescription已准备好存在于特定位置,并且您将新行添加到“某处”但不是之后。

尝试将标题的所有控件一个接一个地添加为:

HtmlMeta metaDes = new HtmlMeta();
metaDes.Name = "description";
metaDes.Content = ds.Tables[0].Rows[0]["Desc"].ToString();

// add the description on the hader.
Page.Header.Controls.Add(metaDes);
// right after add the new line
Page.Header.Controls.Add(new LiteralControl("\n"));

或者您甚至可以简单地在标题上添加文字,然后只渲染最终输出,即一组html代码。

答案 1 :(得分:1)

发布时间太晚了。但可能对未来的读者有所帮助。

显示keywords& 新行上的description元尝试以下内容:

protected void AddMetaTag()
{
    HtmlMeta description = new HtmlMeta();
    description.Name = "description";
    description.Content ="some desc";

    HtmlMeta keywords = new HtmlMeta();
    keywords.HttpEquiv = "keywords";
    keywords.Name ="site keywords";

    this.Page.Header.Controls.Add(new LiteralControl("\r\n"));
    this.Page.Header.Controls.Add(keywords);
    this.Page.Header.Controls.Add(new LiteralControl("\r\n"));
    this.Page.Header.Controls.Add(description);
    this.Page.Header.Controls.Add(new LiteralControl("\r\n"));
}

<强>输出:

<meta name="keywords" content="site keywords" />
<meta name="description" content="some desc />

希望这有帮助!

答案 2 :(得分:0)

我发现我能够使用以下方法在元标记中创建新行:

StringBuilder sb = new StringBuilder();
meta.Append("<meta name=""description"" content=""");
meta.Append(description);
meta.Append("""/>");
meta.Append(Environment.NewLine());

....

Page.Header.Controls.Add(new LiteralControl(sb.ToString()));