我把facebook“喜欢这个”小部件放在我的页面上,我遇到了一个问题:
我的网址是用这种方法动态构建的:
protected String getCurrentUrl()
{
return Server.HtmlEncode(Request.Url.AbsoluteUri);
}
所以facebook iframe是:
<iframe src="http://www.facebook.com/plugins/like.php?href=<%= getCurrentUrl() %>&layout=standard&show_faces=true&width=450&action=like&font=verdana&colorscheme=light&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没有正确抓取链接:
而不是以上所有......所以它停在第一个&amp;。
你看到有什么解决方法吗?
答案 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()) %>" ...