0

我正在开发一个用户控件,我想在其中将元数据发送到我正在针对 .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">

有人可以告诉我我在这里做错了什么吗?根据我所阅读的内容,这应该可以工作。任何帮助将不胜感激,非常感谢!

4

1 回答 1

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();
}
于 2012-09-19T21:30:26.537 回答