1

我希望在我的控制器中正确填写我的哈希值,但我的链接包含错误地传递到我的控制器中的特殊字符:

localhost:51756/Account/ConfirmEmail?key=80d34666-f491-4fbd-821b-4a1e5608e710&hash=B4fcSyRuy/2j94sek8JMxr7+kDg=&newEmail=aGFuc3BvcHBlQGhvdG1haWwuY29t

我的控制器中的哈希 = B4fcSyRuy/2j94sek8JMxr7 kDg=

public ActionResult ConfirmEmail(string hash, string key, string newemail)
    {
         //do something.
    }

' ' 中的 '+' 已更改。有人想从我的网址中获取原始参数吗?

谢谢,汉斯

4

2 回答 2

0

好吧,你可以做两件事:

  1. 您正确编码 + 字符以使 ASP.NET 正确解码它。由于 + 字符的 URL 编码版本是 %2B(请参阅链接),因此链接将变为“...hash=B4fcSyRuy/2j94sek8JMxr7%2BkDg...”

  2. 您可以使用 将哈希编码回其原始格式Url.Encode

于 2013-03-06T14:45:05.287 回答
0

URL 中的所有查询字符串参数值都需要进行 URL 编码。您可以使用System.Web.HttpUtility.UrlEncode(string)C# 中的encodeURIComponent(str)方法或 JavaScript 中的方法来执行此操作。

URL 如下所示:

http://localhost:51756/Account/ConfirmEmail?key=80d34666-f491-4fbd-821b-4a1e5608e710&hash=2j94sek8JMxr7%2BkDg%3D&newEmail=aGFuc3BvcHBlQGhvdG1haWwuY29t

于 2013-03-06T14:41:33.557 回答