在asp.net中动态创建facebook share metatags [og:]

时间:2013-06-20 09:08:00

标签: asp.net facebook google-app-engine facebook-graph-api google-plus

我正在尝试在我的网站的代码后面创建元标记,该网站有一个博客部分。所以每个博客都有自己的标题,形象。因此在代码背后创建。只是想确定这是否正确,Facebook / Google +会识别它。

背后的代码

private void AddMetaTagsForPage(object tempObject)
      {
            string[] metaTags = {"og:title", "og:site_name", "og:type", "og:url", "og:image"};

            foreach(string str in metaTags)
            {
                  HtmlMeta tag = new HtmlMeta();

                  switch(str)
                  {
                        case "og:title":
                              tag.Name = str;
                              tag.Content = tempObject.ChallengeTitle;
                              Page.Header.Controls.Add(tag);
                              break;
                        case "og:site_name":
                              tag.Name = str;
                              tag.Content = "http://www.mysite.com";
                              Page.Header.Controls.Add(tag);
                              break;
                        case "og:type":
                              tag.Name = str;
                              tag.Content = "blog";
                              Page.Header.Controls.Add(tag);
                              break;
                        case "og:url":
                              tag.Name = str;
                              tag.Content = HttpContext.Current.Request.Url.AbsoluteUri;
                              Page.Header.Controls.Add(tag);
                              break;
                        case "og:image":
                              tag.Name = str;
                              tag.Content = String.Format("http://static.mountainwarehouse.com" + tempObject.ChallengeImageURL);
                              Page.Header.Controls.Add(tag);
                              break;
                  }
            }
      }

生成的HTML

    <meta content="No appointment necessary. We hear you coming." name="og:title">
    <meta content="http://www.mysite.com" name="og:site_name">
    <meta content="blog" name="og:type">
    <meta content="http://dev.mysite.com/entries/viewentry.aspx?entryId=34"
    name="og:url">
    <meta content="http://static.mysite.com/Images/2a7803a2-e8f1-424c-9f53-3ddc1fe33c3e.jpg" name="og:image">

在Facebook和谷歌+它说你必须有这种格式的元标记。

<meta content="No appointment necessary. We hear you coming." property="og:title">

而不是属性关键字我有名字。我不知道如何在asp.net中创建它。它对Facebook有效吗?

请帮助

2 个答案:

答案 0 :(得分:6)

后面代码中的所有元标记都缺少您设置属性属性的部分。像

这样的东西
HtmlMeta tag = new HtmlMeta();
tag.Attributes.Add("property", "og:title");
tag.Content = "Title";
Page.Header.Controls.Add(tag);

请参阅以下主题, How to send the og:Title og:Image og:Description og:url info from C# to Facebook

答案 1 :(得分:1)

对于Google+,schema.org微数据优先于Open Graph标记。您可以使用schema.org微数据修饰任何HTML标记,并可以使用Google+ snippet tool生成示例内容。在您的情况下,您可以将itemcope添加到HTML标记中,例如:

<html itemscope itemtype="http://schema.org/Article">

<head>
  <meta itemprop="name" content="Blog title">
  <meta itemprop="description" content="A blog post description">
  <meta itemprop="image" content="http://example.com/test.jpg">
</head>
<body>
  ...

在您的情况下,您需要做的就是改善Google+的结果,将itemprop标记添加到您的代码中,例如:

case "og:site_name":
  tag.Name = str;
  tag.Attributes.Add("itemprop", "name");
  tag.Content = "http://www.mysite.com";
  Page.Header.Controls.Add(tag);
  break;