如何根据用户重定向到单独的视图

本文关键字:单独 视图 重定向 何根 用户 | 更新日期: 2023-09-27 17:55:06

这就是我想做的。我有一个页面在/Admin/供应商/索引。如果一个用户在某个角色中,他们进入这个页面,我希望他们被重定向到另一个视图,只显示某些数据。

我有:

public ActionResult Index()
{
    if (User.IsInRole("Special User"))
    {
        SpecialIndex();
    }
    return View();
}

public ActionResult SpecialIndex()
{
    var viewModel = GetSpecialData();
    return View(viewModel);
}

所以我认为如果用户在角色中并且它调用SpecialIndex方法,它将调用该方法并将用户发送到SpecialIndex视图。

它确实调用SpecialIndex方法,但是当我调用return View(viewModel)时,它只是回到Index方法,并且向用户显示Index视图而不是SpecialIndex

我怎样才能解决这个问题?

如何根据用户重定向到单独的视图

您应该使用获取视图名称的View()构造函数,在这种情况下,您可以具体说明要返回哪个视图,或者使用RedirectToAction方法重定向到SpecialIndex操作。参见文档

public ActionResult Index()
{
    if (User.IsInRole("Special User"))
    {
        return this.RedirectToAction("SpecialIndex");
    }
    return View();
}

检查User.IsInRole("Special User"),它将解决您的问题。无论哪种方式,您都为它返回一个视图。