1

我在网站的三个不同页面上有三个不同的点赞按钮。有没有办法根据按钮所在的页面动态创建和分配这些 og 标签?

这是我正在使用的代码:

protected void Page_Load(object sender, EventArgs e)
{


    // ADD META INFORMATION TO HEADER
    HtmlHead head = (HtmlHead)Page.Header;


    // KEYWORDS
    HtmlMeta hm = new HtmlMeta();
    hm.Name = "keywords";
    hm.Content = this.metaKeywords;
    head.Controls.Add(hm);

    // DESCRIPTION
    hm = new HtmlMeta();
    hm.Name = "description";
    hm.Content = this.metaDescription;
    head.Controls.Add(hm);

    // ************************************************************************

    //      <meta property="og:title" content="Faces of Metastatic Breast Cancer (MBC) Video Wall" />
    //      <meta property="og:type" content="cause" />
    //      <meta property="og:image" content="http://www.facesofmbc.org/images/MBC_Logo.png"/>
    //      <meta property="og:url" content="http://bit.ly/rkRwzx" />
    //      <meta property="og:site_name" content="Faces of Metastatic Breast Cancer (MBC)" />
    //      <meta property="og:description" content="I just viewed the new Faces of Metastatic Breast Cancer (MBC) video wall. For each view, comment or share of the video wall during October, Genentech will donate $1 to MBC initiatives. Watch TODAY!" />
    //      <meta property="fb:admins" content="653936690"/>

    string ogTitle = "";
    string ogType = "";
    string ogImage = "";
    string ogUrl = "";
    string ogSiteName = "";
    string ogDescription = "";
    string ogAdmins = "";


    if (Page.Request.Path.Contains("videoWall.aspx"))
    {
        hm = new HtmlMeta();
        hm.Attributes.Add("property", "og:title");
        hm.Content = "TEST OG TITLE";
        head.Controls.Add(hm);

        hm = new HtmlMeta();
        hm.Name = "og:type";
        hm.Content = "TEST OG TYPE";
        head.Controls.Add(hm);
    }
    // ************************************************************************
}

我知道这是错误的,并且似乎有不同的方法,但我只是向您展示我在做什么以及我前进的方向。注释掉的标签只是作为我需要哪些标签的指南。任何帮助,将不胜感激!

提前致谢!

4

1 回答 1

2

如果你把你的属性变成一个接口,然后把那个接口扔到使用你的控件的类上怎么办?

您可以创建一个界面,其中包含您尝试获取的所有属性...

interface IFaceBookMeta
{
    string ogTitle {get; set;}
    string ogType {get; set;}
    //...... and so on
}

然后将该接口应用到要在其上托管控件的页面。

public partial class SomePageThatHasTheControl: System.Web.UI.Page, IFaceBookMeta

然后,在该类中,您现在可以显式设置接口的属性

this.ogTitle = "A Random Title";
this.ogType = "A Type";

现在,您转到控件的代码并执行以下操作:

//This is the page that is hosting the control.
IFaceBookMeta meta = (IFaceBookMeta)this.Page;

hm = new HtmlMeta();
hm.Attributes.Add("property", "og:title");
hm.Content = meta.ogTitle;
head.Controls.Add(hm);

hm = new HtmlMeta();
hm.Name = "og:type";
hm.Content = meta.ogType;
head.Controls.Add(hm);
//.... and so on

这样做会阻止您在每次将控件添加到另一个页面时修改控件的代码。相反,您只需在您想要控制的页面上拍打界面,设置属性。

于 2012-09-28T17:14:59.993 回答