登录c#mvc后尝试重定向

时间:2018-04-20 02:46:48

标签: c# html asp.net-mvc redirect razor

这是我的问题。用户登录后,我将尝试验证用户密码是否属于临时密码。如果是,我想重定向到不同的视图。如果没有,我想去应用菜单。但是,当它重定向时,它表示找不到资源。

if (Session["IdUsuario"] == null)
{
    Response.Redirect("~/");
}
else
{
    if ((bool)Session["Temporal"] == true)
    {
        Response.Redirect("~/Login/ContraseñaTemporal.cshtml");// <--- Here is my issue
    }

1 个答案:

答案 0 :(得分:0)

您对Response.Redirect的使用是完全错误的,因为.cshtml文件不像webforms页面(.aspx)那样直接访问(它们需要通过控制器操作方法返回视图) 。如果您使用的是MVC控制器,请改用RedirectToAction

if (Session["IdUsuario"] == null)
{
    return RedirectToAction("Index", "Home"); // replacement of Response.Redirect to root page
}
else
{
    if ((bool)Session["Temporal"] == true)
    {
        // use RedirectToAction instead of Response.Redirect
        return RedirectToAction("ContrasenaTemporal", "Login"); 
    }
    else
    { 
        // return something else
    }
}

目标行动方法也应如下:

// inside LoginController class
public ActionResult ContrasenaTemporal()
{
    // other stuff

    return View("ContraseñaTemporal");
}

修改1:

如果您想要redirect from a view page,您仍然需要使用Response.Redirect跟踪MVC中的虚拟路径,指向上面给定的控制器操作方法:

@if (Session["IdUsuario"] == null)
{
    Response.Redirect("~/Home/Index");
}
else
{
    if ((bool)Session["Temporal"] == true)
    {
        Response.Redirect("~/Login/ContrasenaTemporal"); // follow MVC route convention
    }
}