生成的URL中的Microsoft.Web.Helpers Gravatar错误

时间:2010-11-22 09:25:27

标签: asp.net-mvc gravatar

我正在使用Microsoft.Web.Helpers中的Gravatar助手类,如此

<%: Gravatar.GetHtml("me@domain.com", 80, "identicon") %>

在源中生成

<img src="http://www.gravatar.com/avatar/0ff2e377be7d73b15f0b48022a755717?s=80&amp;d=identicon" alt="gravatar" />

图片网址有效,但不应该是&d=identicon而不是&amp;d=identicon吗?它似乎编码了&符号。使用Gravatar.GetUrl()

时也是如此

如何在不重写我自己的版本的情况下停止编码&符号?

2 个答案:

答案 0 :(得分:3)

<%:Gravatar.GetHtml("me@domain.com", 80, "identicon") %>

你告诉它对输出进行编码,&#34;:&#34;这是一个短手。如果您不想对输出进行编码,请执行此操作

<%=Gravatar.GetHtml("me@domain.com", 80, "identicon") %>

据我所知&#34;:&#34;是通过Html.Encode()

输出的简写

======修改

Helper正在做的是正确的,它应该编码&符号,更多信息在下面的链接

XHTML and & (Ampersand) encoding

答案 1 :(得分:0)

在代码中(比如在控制器操作中......而不是在* .aspx或* .cshtml标记中),当我这样做时:

var avatarUrl = Gravatar.GetUrl("someone@somewhere.com", defaultImage: "identicon");

这将返回以下字符串:

http://www.gravatar.com/avatar/923d10bc97028030e8e67e7db62658d1?s=80&amp;d=identicon

请注意编码的&符号(&amp; amp;),其中不应有任何编码。我认为这不符合预期。重要的原因是,我们得到了默认的gravatar徽标,而不是获得我们想要的identicon(或gravatar),这是我们不想要的(identicon回退的重点)。请记住,这是从控制器完成的,而不是视图标记。