我试图将ReturnUrl
查询字符串传递到我的登录页面。我有一个部分登录视图(有点像登录框)和一个登录视图。现在,我有以下线在我的部分观点:在ASP.NET MVC中编码returnUrl查询字符串
using (Html.BeginForm("Login"
, "Account"
, new { returnUrl=HttpUtility.UrlEncode(
Request.QueryString["ReturnUrl"])
?? HttpUtility.UrlEncode(Request.Path)
}
, FormMethod.Post))
当我点击我的部分观点的提交按钮(例如,从 http://localhost:12345/Product/1234/Product1
),
我会被重定向到我的登录页面以下网址:
http://localhost:12345/Account/Login?returnUrl=%2FProduct%2F1234%2FProduct1
但如果我登录,我会看到一个http 400的响应,因为页面返回
http://localhost:12345/Account/%2fProduct%2f1234%2fproduct1
。另外,如果我输入了错误的凭证,则会导致returnUrl
查询字符串被再次编码,因此每个%
字符都会再次转换为%25
!
我应该提到如果我手动键入
http://localhost:12345/Account/Login?returnUrl=/Product/1234/Product1
(不进行编码),并登录,我成功地重定向到指定的路径。
我想我错过了一些明显的东西。但无法找出什么。
谢谢。
是不是自动为您完成的编码?你不需要自己编码。 – 2011-12-31 18:38:19