【发布时间】:2009-04-22 18:42:35
【问题描述】:
我的应用程序目前有一个登录链接,如下所示:
<a href="/login?ReturnUrl=" + <%= Request.RawUrl %>>Login</a>
我想在下面的控制器动作中处理登录页面上的 POST 命令:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Login(string returnUrl)
{
// Authenticate user
return Redirect(returnUrl);
}
这里的问题是,如果 RawUrl 是具有多个 url 参数的东西,例如“somepage?param1=1¶m2=2¶m3=3”,那么传递给 Login 操作的 returnUrl 在第一个 & 符号之后被截断:“somepage?param1 =1"。
我已尝试对 RawUrl 进行 UrlEncoding,但这似乎有所不同。似乎这里的 ASP.NET MVC 框架是在将 url 参数映射到控制器操作参数之前对它们进行 UrlDecoding,这最终剥离了我想在我的 returnUrl 参数中看到的其他 url 参数。
有没有办法解决这个问题?我知道我可以只使用 Request.Path 并解析出我需要的值,但我想我会先看看是否有更清洁的方法。
【问题讨论】:
标签: asp.net-mvc