繁体   English   中英

登录后尝试重定向C#MVC

[英]Trying to redirect after login c# mvc

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

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

您对Response.Redirect使用是完全错误的,因为不能像Webforms页面( .aspx )那样直接访问.cshtml文件(它们需要通过控制器操作方法作为视图返回)。 如果您在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:

如果要从视图页面重定向 ,则仍然需要使用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
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM