我正在尝试将facebook标记添加到页面中。它们必须针对不同的用户有所不同,所以我尝试动态地添加它们。我有这样的代码:
<meta name="og:title" content="<%= GetSocialTitle() %>"/>
但是在源页面中它没有发现并且看起来像:
<meta name="og:title" content="<%= GetSocialTitle() %>"/>
而不是
<meta name="og:title" content="some title">
我试图在代码中设置meta
HtmlMeta tag = new HtmlMeta();
tag.Name = "og:title";
tag.Content = GetSocialTitle();
Page.Header.Controls.Add(tag);
但它抛出异常“控件集合无法修改,因为控件包含代码块(即&lt;%...%&gt;)”。它真的包含,我无法取代它们。那么我该如何解决这个问题?
答案 0 :(得分:12)
如果你想使用后面的代码删除og:title meta标签并将headat =“server”放在head标签中。
标记中的:
<head runat="server">
...
</head>
和代码背后:
HtmlMeta tag = new HtmlMeta();
tag.Name = "og:title";
tag.Content = GetSocialTitle();
Page.Header.Controls.Add(tag);
如果您不想使用代码,请从head标签中删除runat服务器:
<head>
<meta name="og:title" content="<%= GetSocialTitle() %>"/>
...
</head>
答案 1 :(得分:3)
另一个小技巧是围绕内容使用占位符控件。 所以在你的情况下,你可以......
<asp:PlaceHolder runat="server">
<meta name="og:title" content="<%= GetSocialTitle() %>"/>
</asp:PlaceHolder>
它应该正确翻译。
HTH
戴夫