当我动态添加元标记时,它们会在一行中呈现。
我如何在单独的行中打破它们
我尝试了以下代码,但这对我不起作用
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网络表单。在这方面的帮助表示赞赏。
答案 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()));