如果用户未登录,将用户重定向到另一个视图

本文关键字:用户 另一个 视图 重定向 登录 如果 | 更新日期: 2023-09-27 18:17:19

我正在开发一个用户管理功能。我正在尝试添加授权并将用户重定向到我的登录页面,如果他试图在登录之前像这样访问用户管理页面:

[HttpGet]
public ActionResult UsersList()
{
    if (Session["UserName"] == null)
    {
        RedirectToAction("Login", "Login");
    }
    else
    {
        var User = new User();
        User.usersList = DBManager.Instance.GetUsersList();
        User.PreferedLanguages.Add(new SelectListItem { Text = "ENGLISH", Selected = true, Value = "ENGLISH" });
        User.PreferedLanguages.Add(new SelectListItem { Text = "DUTCH", Value = "DUTCH" });
        return View(User);
    }
}

但是我应该为一个动作结果返回一个视图,对吗?这段代码不能编译,我得到以下错误:

错误4 'WebApplication9.Controllers.UserManagementController.UsersList()':并非所有代码路径都返回值>E:'Work'WebApplication9'Controllers'UserManagementController.cs

此时是否可以返回另一个控制器视图?

如果用户未登录,将用户重定向到另一个视图

应该使用以下代码:

return RedirectToAction("Login", "Login");

代替简单的RedirectToAction .

ActionResult是一组指令,在动作完成后由动作调用者执行。RedirectToActionResult (RedirectToAction的返回类型)包含需要写入Response的指令,以执行正确的重定向。

据我所知,这就是动作调用的工作方式,也许官方文档对此有另一种看法。