登录后尝试重定向C#MVC

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


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

{

    Response.Redirect("~/");

}

else

{

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

    {

        Response.Redirect("~/Login/ContraseñaTemporal.cshtml");// <--- Here is my issue

    }


慕娘9325324
浏览 186回答 1
1回答

潇潇雨雨

您对的使用Response.Redirect是完全错误的,因为.cshtml没有像Webforms页面(.aspx)那样直接访问文件(它们需要通过控制器操作方法作为视图返回)。如果您在MVC控制器中工作,请RedirectToAction改用。if (Session["IdUsuario"] == null){&nbsp; &nbsp; return RedirectToAction("Index", "Home"); // replacement of Response.Redirect to root page}else{&nbsp; &nbsp; if ((bool)Session["Temporal"] == true)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; // use RedirectToAction instead of Response.Redirect&nbsp; &nbsp; &nbsp; &nbsp; return RedirectToAction("ContrasenaTemporal", "Login");&nbsp;&nbsp; &nbsp; }&nbsp; &nbsp; else&nbsp; &nbsp; {&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; // return something else&nbsp; &nbsp; }}目标操作方法也应如下所示:// inside LoginController classpublic ActionResult ContrasenaTemporal(){&nbsp; &nbsp; // other stuff&nbsp; &nbsp; return View("ContraseñaTemporal");}编辑1:如果要从视图页面重定向,您仍然需要使用MVC在MVC中使用虚拟路径Response.Redirect,指向上面给定的控制器操作方法:@if (Session["IdUsuario"] == null){&nbsp; &nbsp; Response.Redirect("~/Home/Index");}else{&nbsp; &nbsp; if ((bool)Session["Temporal"] == true)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; Response.Redirect("~/Login/ContrasenaTemporal"); // follow MVC route convention&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP