这是我的问题。用户登录后,我将尝试验证用户密码是否属于临时密码。如果是,我想重定向到不同的视图。如果没有,我想去应用菜单。但是,当它重定向时,它表示找不到资源。
if (Session["IdUsuario"] == null)
{
Response.Redirect("~/");
}
else
{
if ((bool)Session["Temporal"] == true)
{
Response.Redirect("~/Login/ContraseñaTemporal.cshtml");// <--- Here is my issue
}
答案 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
}
}