为了账号安全,请及时绑定邮箱和手机立即绑定

登录后尝试重定向C#MVC

登录后尝试重定向C#MVC

C#
慕娘9325324 2021-04-01 10:11:49
这是我的问题。用户登录后,我将尝试验证用户密码是否为临时密码。如果是这样,我想重定向到另一个视图。如果没有,我想转到应用程序菜单。但是,当它重定向时,它说找不到资源。if (Session["IdUsuario"] == null){    Response.Redirect("~/");}else{    if ((bool)Session["Temporal"] == true)    {        Response.Redirect("~/Login/ContraseñaTemporal.cshtml");// <--- Here is my issue    }
查看完整描述

1 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

您对的使用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:


如果要从视图页面重定向,您仍然需要使用MVC在MVC中使用虚拟路径Response.Redirect,指向上面给定的控制器操作方法:


@if (Session["IdUsuario"] == null)

{

    Response.Redirect("~/Home/Index");

}

else

{

    if ((bool)Session["Temporal"] == true)

    {

        Response.Redirect("~/Login/ContrasenaTemporal"); // follow MVC route convention

    }

}


查看完整回答
反对 回复 2021-04-24
  • 1 回答
  • 0 关注
  • 185 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信