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输出。
更新
元标记的来源是数据库,整个元标记存储在一个字段
中答案 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];