facebook - asp页面中的“喜欢这个”网址问题

时间:2010-07-10 09:27:07

标签: asp.net facebook

我把facebook“喜欢这个”小部件放在我的页面上,我遇到了一个问题:

我的网址是用这种方法动态构建的:

protected String getCurrentUrl()
{
    return Server.HtmlEncode(Request.Url.AbsoluteUri);
}

所以facebook iframe是:

<iframe src="http://www.facebook.com/plugins/like.php?href=<%= getCurrentUrl() %>&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=80"
scrolling="no" frameborder="0" style="border: none; overflow: hidden; width: 450px;
height: 80px;" allowtransparency="true"></iframe>

嗯,getCurrentUrl结果的一个例子是:

  

http://gramma.ro/Site/DetaliiProdus.aspx?c=m1&p=427&s1=41&s2=72

但是,因为那些“&amp;” (&amp; - 编码时)facebook没有正确抓取链接:

  • 需要:
  

http://gramma.ro/Site/DetaliiProdus.aspx?c=m1

而不是以上所有......所以它停在第一个&amp;。

你看到有什么解决方法吗?

1 个答案:

答案 0 :(得分:1)

你可能想要Url编码:

return Server.UrlEncode(Request.Url.AbsoluteUri);

虽然我建议您使用以下内容生成此URL:

public string GetFaceBookAddress()
{
    var builder = new UriBuilder("http://www.facebook.com/plugins/like.php");
    var nvc = new NameValueCollection
    {
        { "href", Request.Url.AbsoluteUri },
        { "layout", "standard" },
        { "show_faces", "true" },
        { "width", "450" },
        { "action", "like" },
        { "font", "verdana" },
        { "colorscheme", "light" },
        { "font", "80" },
    };
    builder.Query = ToQueryString(nvc);
    return builder.ToString();
}

private static string ToQueryString(NameValueCollection nvc)
{
    return string.Join("&", Array.ConvertAll(nvc.AllKeys, key => string.Format("{0}={1}", HttpUtility.UrlEncode(key), HttpUtility.UrlEncode(nvc[key]))));
}

然后:

<iframe src="<%= Server.HtmlEncode(GetFaceBookAddress()) %>" ...