根据角色打开视图(ASP.NET MVC)

时间:2018-03-29 09:32:32

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

我的网站中有多个用户角色。

我需要返回关于用户角色的不同观点。

现在我调用了查看默认方式

public ActionResult Index()
{
    return View();
} 

但我需要这个:如果用户有Admin角色,我会返回Index.cshtml。 如果它有用户角色,我需要返回IndexUser.cshtml

我怎么能意识到它?

更新

我试图像这样认识到它

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

        if (User.IsInRole("Test"))
        {
            return View("IndexProjectManager");
        }

        return View();
    } 

但总是return View

3 个答案:

答案 0 :(得分:1)

如果你想在视图中进行,那么你可以使用下面的方法重定向到另一个视图:

return RedirectToAction("Reporting", "ReportManagement", new { area="Admin" })

我的意思是基于以下条件:

if (isAdmin)
{ 
    return view();//supposing it is the view for admin
} 
else
{ 
    return RedirectToAction("Reporting", "ReportManagement", new { area="Admin" })
}

答案 1 :(得分:1)

if (User.IsInRole("admin")) //whatever your admin role is called
{
    return View();
}

if (User.IsInRole("user"))
{
    return View("IndexUser");
}

return View("Whatever"); //or RedirectToAction(...)

答案 2 :(得分:0)

注意:我的基础是假设您的角色如何运作......如果这不合适,请道歉。

您可以将Index视图设置为最低级别(基本)用户视图,然后将后缀附加到每个更高级别的'角色的观点。

这样,你可以这样做:

[Authorize] //make sure they're logged in
public ActionResult Index()
{
    string _viewSuffix = "";

    //this bit would have to be hierarchical - high to low - so you have a degradation of what the view offers...
    if (User.IsInRole("Admin")) 
    {
        _viewSuffix = "Admin";
    }
    else if(User.IsInRole("Test"))
    {
        _viewSuffix = "Test";
    }
    //...and so on

    return View("Index" + _viewSuffix);
}