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

时间:2013-01-21 02:54:42

标签: c# asp.net asp.net-mvc

所以这就是我想要做的。我在/ Admin / Vendors / Index有一个页面。如果某个用户处于某个角色并且他们转到此页面,我希望将他们重定向到另一个只显示某些数据的视图。

这就是我所拥有的:

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

我该如何解决?

2 个答案:

答案 0 :(得分:3)

您应该使用获取视图名称的View()构造函数,在这种情况下,您可以明确说明要返回的视图,或使用RedirectToAction方法重定向到SpecialIndex行动。请参阅documentation

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

答案 1 :(得分:1)

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