我正在开发一个用户控件,在这个用户控件中,我希望将元数据元素化为我正在构建的.NET 3.5。我希望一些元标记内容是动态的,即方法调用的结果。以下是我在用户控件中执行操作的示例:
<meta id = "metaOgUrl" property="og:url" content="<%=this.GetOgImage()%>" runat = "server"/>
和后面代码中的GetOgImage():
public string GetOgImage()
{
if (entry != null)
{
return entry.PhotoUrl;
}
return String.Empty;
}
好看又简单吧?问题是我看到方法调用本身在浏览器中呈现为内容值:
<meta id="tmpl_appmain_block1_ctl00_metaOgUrl" content="<%=this.GetOgImage()%>" property="og:url">
有人能告诉我这里做错了什么吗?据我所知,这应该是有效的。感谢任何帮助,非常感谢!
答案 0 :(得分:1)
是的,head标记中的代码被删除了,但你可以删除runat = server属性并将其作为hack执行:
<meta id="metaOgUrl" property="og:url" content="<%= "" + GetOgImage() %>" />
或者,保留runat = server并删除content属性并将其设置在代码隐藏
中<meta id="metaOgUrl" runat="server" property="og:url" />
protected void Page_Load(object sender, EventArgs e) {
metaOgUrl.Attributes["content"] = GetOgImage();
}