将元服务器控件内容设置为方法返回值

时间:2012-09-19 18:49:09

标签: c# asp.net user-controls

我正在开发一个用户控件,在这个用户控件中,我希望将元数据元素化为我正在构建的.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">

有人能告诉我这里做错了什么吗?据我所知,这应该是有效的。感谢任何帮助,非常感谢!

1 个答案:

答案 0 :(得分:1)

是的,head标记中的代码被删除了,但你可以删除runat = server属性并将其作为hack执行:

<meta id="metaOgUrl" property="og:url" content="<%= "" + GetOgImage() %>" />

或者,保留runat = server并删除co​​ntent属性并将其设置在代码隐藏

<meta id="metaOgUrl" runat="server" property="og:url" />

protected void Page_Load(object sender, EventArgs e) {
    metaOgUrl.Attributes["content"] = GetOgImage();
}