[英]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.