我的网站中有多个用户角色。
我需要返回关于用户角色的不同观点。
现在我调用了查看默认方式
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
答案 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);
}