假设我在布局中有一个actionlink,我想要显示,如果登录用户是“Manager”或“Salesperson”这两个角色中的任何一个,那我该怎么做? 我一直在做的事情如下: -
@if((User.IsInRole("Manager"))||(User.IsInRole("Salesperson")))
{
@Html.ActionLink("Sales Reports", "SalesReports", "Reports")
}
不幸的是,上面的代码行不起作用。具有角色“Salesperson”的用户看不到“销售报告”链接。 我想使“销售报告”链接仅对“经理”角色或“销售人员”角色的用户可见。请建议如何去做? 谢谢。
答案 0 :(得分:0)
基于角色的MVC方式是通过对动作或控制器使用[Authorize]属性。然后,您可以按如下方式说出授予的角色:
[Authorize(Roles="Manager,Salesperson")]
您可以创建包含这些操作的部分视图,并根据用户角色显示该视图。
[Authorize(Roles="Manager,Salesperson")]
public ActionResult NavigationLinks()
{
return View("PATH TO PARTIAL");
}
答案 1 :(得分:0)
应该适用于您的生产线。你可能在“销售人员”一词中犯了错误吗?
我还建议将此逻辑移至控制器:
public ActionResult YourAction()
{
bool isAllowed = User.IsInRole("Manager")||User.IsInRole("Salesperson");
ViewBag.isAllowed = isAllowed;
...
return View();
}
比你的观点:
@if((bool)ViewBag.isAllowed)
{
@Html.ActionLink("Sales Reports", "SalesReports", "Reports")
}