在ASP.NET MVC中,登录时经常需要处理ReturnUrl参数,以便在登录后返回到原来的页面。以下是一个解决方法的示例代码:
[HttpPost]
public ActionResult Login(string username, string password, string returnUrl)
{
if (IsValid(username, password))
{
FormsAuthentication.SetAuthCookie(username, false);
if (!string.IsNullOrEmpty(returnUrl) && Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "用户名或密码不正确");
return View();
}
}
[Authorize]
public ActionResult SomePage()
{
// 页面的处理逻辑
}
public ActionResult SomePage()
{
if (!User.Identity.IsAuthenticated)
{
return RedirectToAction("Login", "Account", new { ReturnUrl = Url.Encode(Request.Url.PathAndQuery) });
}
else
{
// 页面的处理逻辑
}
}
这样,用户在访问未登录时需要登录的页面时,会被重定向到登录页面,并在登录成功后自动返回到原来的页面。