2

我正在尝试在后面的代码中为我的网站创建元标记,该网站有一个博客部分。所以每个博客都会有自己的标题、图片。因此在后面的代码中创建。只是想确定这是否正确,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 和 google+ 上,它说你必须有这种格式的元标记。

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

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

请帮忙

4

2 回答 2

7

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

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

请参阅以下线程, 如何将 og:Title og:Image og:Description og:url 信息从 C# 发送到 Facebook

于 2013-07-25T12:07:59.063 回答
1

对于 Google+,schema.org 微数据优于 Open Graph 标记。您可以使用 schema.org 微数据装饰任何 HTML 标记,并且可以使用Google+ 代码段工具生成示例内容。在您的情况下,您可以将 itemscope 添加到 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;
于 2013-06-21T00:45:18.960 回答