我希望我的哈希值在我的控制器中正确填写,但我的链接包含错误传递给我的控制器的特殊字符:
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.
}
'''已更改''。 Annyone有想法从我的网址获取原始参数吗?
谢谢, 汉斯
答案 0 :(得分:0)
URL中的所有查询字符串参数值都需要进行URL编码。您可以使用C#中的System.Web.HttpUtility.UrlEncode(string)
方法或JavaScript中的encodeURIComponent(str)
方法来执行此操作。
网址如下:
http://localhost:51756/Account/ConfirmEmail?key=80d34666-f491-4fbd-821b-4a1e5608e710&hash=2j94sek8JMxr7%2BkDg%3D&newEmail=aGFuc3BvcHBlQGhvdG1haWwuY29t
答案 1 :(得分:0)
嗯,你可以做两件事:
您正确编码+字符以使ASP.NET正确解码。由于+字符的URL编码版本为%2B(请参阅link),链接将变为“... hash = B4fcSyRuy / 2j94sek8JMxr7%2BkDg ...”
使用Url.Encode
将哈希值编码回原始格式。