将操作重定向到同一区域内的另一个控制器

时间:2013-09-09 19:20:53

标签: asp.net-mvc-4 asp.net-mvc-routing

我正在尝试让我的网站在成功登录时运行重定向。我把所有会员路线都放在一个区域内。

/membership/login/index
/membership/profile/index

我已经尝试了以下两个尝试让它工作 - 登录成功但重定向除了更改地址之外什么都不做。我尝试了以下但是他们都得出了相同的结果

[HttpPost]
public ActionResult Index(Login loginViewModel)
{
    ...
    return RedirectToRoute(new { Area = "Membership", 
               Controller = "Profile", Action="Index" });
}

导致此

http://mysite.com/Membership/Login?ReturnUrl=%2fmembership%2fProfile

然后我的下一步努力

return RedirectToAction("Index", "Profile", new { Area = "Membership" });
....
http://mysite.com/Membership/Login?ReturnUrl=%2fmembership%2fProfile

最后

return RedirectToAction("Index", "Profile");
... 
http://mysite.com/Membership/Login?ReturnUrl=%2fmembership%2fProfile

2 个答案:

答案 0 :(得分:1)

您当然可以重定向HTTP帖子(您不能做的是将其重定向,然后期望重定向的响应也是POST)。这里发生的是您成功将请求重定向到正确的页面,但有问题的页面需要身份验证,并且由于用户未经过身份验证,请求将再次发送回登录页面。您应该在设置Cookie后重定向(或执行您正在执行的任何身份验证机制)。

答案 1 :(得分:1)

您必须在重定向之前保存Cookie。

FormsAuthentication.SetAuthCookie("UserName or somthing",false/true);
return RedirectToAction("Index", "Profile", new { Area = "Membership" });

现在它会起作用..