重定向到操作方法/视图

时间:2015-01-05 07:10:37

标签: asp.net-mvc

我已经实现了idel超时功能。这里当用户想要1分钟时,我们将用户重定向到登录页面。我们保留了自动注销发生时用户所在网址的跟踪。例如,用户正在重置密码视图,如果发生自动注销,我得到的网址如下

http://localhost/XYZ.Portal/?returnUrl=%2FXYZ.Portal%2FUser%2FResetPassword

通过使用以下代码

实现上述URL
'@Url.Action("Login", "User", new { returnUrl = HttpContext.Current.Request.RawUrl })'

现在当用户重定向到登录页面时再次登录时,我使用以下代码将其重定向回来,但代码似乎无法正常工作。我做错了什么。?

[HttpPost]
public ActionResult Login(FormCollection formCollection)
{
    if (ModelState.IsValid)
    {
        UserBE user = new UserBE();
        user.Email = formCollection["Email"];
        user.Password = formCollection["Password"];
        user = UserBL.AuthenticateUser(user);
        if (user.AuthenticUser)
        {
            if (Request.QueryString["returnUrl"] != null)
            {
                string returnUrl = Server.UrlDecode(Request.QueryString["returnUrl"]);
                Redirect(returnUrl );
            }
            else
            {
                Session["Email"] = user.Email;
                return RedirectToAction("DashBoard");
            }
        }
        else
            return View(user);
    }
    return View();
}

[HttpGet]登录操作方法:

[HttpGet]
public ActionResult Login()
{
   return View();
}

returnUrl I get as XYZ.Portal/User/ResetPassword

提前致谢。

2 个答案:

答案 0 :(得分:0)

您需要返回 RedirectResult

if (Request.QueryString["returnUrl"] != null)
{
    string returnUrl = Server.UrlDecode(Request.QueryString["returnUrl"]);

    return Redirect(returnUrl);
}

请参阅RedirectResult

答案 1 :(得分:0)

  

不工作。现在我的URL变为localhost / XYZ.Portal

在这种情况下,您可以执行以下两个选项之一:

1)写:

string startReturnUrl = "http://www." + your returnUrl

2)将你的returnUrl拆分为:

string viewName = returnUrl.Split('/').Last();

但我认为最好将returnUrl更改为仅需要的视图名称