0

我正在使用来自 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" />

图片 URL 确实有效,但它不应该有效&d=identicon&amp;d=identicon?它似乎已经对 & 符号进行了编码。这在使用的时候也是一样的Gravatar.GetUrl()

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

4

2 回答 2

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

你告诉它对输出进行编码,“:”是这个的简写。如果您不想对输出进行编码,请执行此操作

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

据我所知,“:”是通过 Html.Encode() 输出的简写

=========编辑

Helper 所做的是正确的,它应该对 & 符号进行编码,更多信息请参见下面的链接

XHTML 和 & (&) 编码

于 2010-11-22T09:26:24.747 回答
0

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

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

这将返回以下字符串:

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

请注意不应该有任何编码的编码 & 符号 (&)。我认为这没有按预期工作。之所以重要,是因为我们没有获得我们想要的标识(或 gravatar),而是获得了我们不想要的默认 gravatar 徽标(标识回退的全部要点)。请记住,这是从控制器完成的,而不是视图标记。

于 2010-12-06T21:45:51.350 回答