我目前在我的应用程序上有一个登录链接,如下所示:
<a href="/login?ReturnUrl=" + <%= Request.RawUrl %>>Login</a>
Run Code Online (Sandbox Code Playgroud)
我想在控制器操作中的登录页面上处理POST命令:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Login(string returnUrl)
{
// Authenticate user
return Redirect(returnUrl);
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是如果RawUrl是多个url参数,如"somepage?param1 = 1¶m2 = 2¶m3 = 3",那么传递给Login操作的returnUrl会在第一个&符号之后被截断:"somepage?param1 = 1" .
我尝试过UrlEncoding RawUrl,但这似乎有所不同.看来这里的ASP.NET MVC框架是UrlDecoding url params,然后将它们映射到控制器动作参数,最终剥离了我想在returnUrl参数中看到的其他url参数.
有没有办法解决?我知道我可以使用Request.Path并解析我需要的值,但我想我会先看看是否有更清洁的方法.
Cra*_*ntz 38
您可能错误地编码了链接.是的,它们确实需要编码.我们是这样做的:
<a href="<%= Url.Action("Delete", "TimeRecord",
new RouteValueDictionary(new { id = timeRecord.AltId,
returnUrl=ViewContext.HttpContext.Request.Url.PathAndQuery }) ) %>">
Run Code Online (Sandbox Code Playgroud)
确保在使用之前对RawUrl进行URL编码.
<%= Url.Encode(Request.RawUrl) %>
Run Code Online (Sandbox Code Playgroud)
这应该为你做.
归档时间: |
|
查看次数: |
42047 次 |
最近记录: |