从returnURL ASP .NET MVC中识别控制器和操作

时间:2012-09-19 13:29:48

标签: asp.net asp.net-mvc asp.net-mvc-3

现在,当有人注销时,我会转到注销动作网址,从哪个网页开始。但问题是,我不能解除控制器的url动作,他在那里按下退出。

例如,用户在页面上

site.com/cabinet/home/index

并按此处按下url:

site.com/Account/LogOut/?returnURL=/cabinet/home/index

public ActionResult LogOut(string returnURL)
{
    // Need to RedirectToAction(...)
    return Redirect(returnURL);
}

所以,如果我将他重定向到returnURL-在我的控制器中不会发生任何事情(即使不在控制器中, - 在View中,这将被重新绘制为非协作用户(不是auth的相同界面而不是auth用户)。) / p>

那么,我应该提取控制器,动作,区域(?),参数并且只有在这之后才能生成RedirectToAction吗?或者当你只知道url时,还有其他任何让控制器被触发的方法吗?

THX。

2 个答案:

答案 0 :(得分:0)

在您的视图中

@using (Html.BeginForm("LogOut", "Account", 
    new { returnUrl = HttpContext.Current.Request.Url.LocalPath },
    FormMethod.Post))
{
<input type="submit" name="logout" value="Выход" />
}

在行动中:

    public ActionResult LogOut(string returnUrl)
    {
        FormsAuthentication.SignOut();
        if (Url.IsLocalUrl(returnUrl))
        {
          //  return RedirectToAction("LogIn", "Account", new { returnUrl = returnUrl });
            return Redirect(returnUrl);
        }
        else
        {

            return Redirect(FormsAuthentication.LoginUrl);
        }
    }

答案 1 :(得分:-2)

    return RedirectToAction(ActionName, ControllerName)