【发布时间】:2019-04-12 17:08:57
【问题描述】:
我使用 AngularJS 从 JSON 创建了一个菜单。我想根据分配给用户的角色显示或隐藏它。我有两个角色,Admin 和 HeadQuarter。我只想向 HeadQuarter 角色显示管理库存和销售库存菜单,并且只向 Admin 角色显示销售库存
这是我的代码:
$scope.Menu = [
{
Name: 'Manage Inventory',
SubMenu: [{
Name: 'Manage Products',
Link: { Action: 'SearchProduct', Controller: 'Inventory' }
}, {
Name: 'Manage SubCategories',
Link: { Action: 'SearchSubCategory', Controller: 'Inventory' }
}, {
Name: 'Manage Categories',
Link: { Action: 'SearchCategory', Controller: 'Inventory' }
}, {
Name: 'Manage Departments',
Link: { Action: 'SearchDepartment', Controller: 'Inventory' }
}, {
Name: 'View/Print Inventory',
Link: { Action: 'SearchInventory', Controller: 'Inventory' }
}, {
Name: 'Stock Taking',
Link: { Action: 'StockTaking', Controller: 'Inventory' }
}]
},
{
Name: 'Sales',
SubMenu: [{
Name: 'Sale Products',
Link: { Action: 'SearchProduct', Controller: 'Inventory' }
}, {
Name: 'Manage SubCategories',
Link: { Action: 'SearchSubCategory', Controller: 'Inventory' }
}, {
Name: 'Sale Categories',
Link: { Action: 'SearchCategory', Controller: 'Inventory' }
}, {
Name: 'Sale Departments',
Link: { Action: 'SearchDepartment', Controller: 'Inventory' }
}, {
Name: 'View/Print Inventory',
Link: { Action: 'SearchInventory', Controller: 'Inventory' }
}, {
Name: 'Stock Taking',
Link: { Action: 'StockTaking', Controller: 'Inventory' }
}]
}
];
我在这里获得角色:
var _hrole = @Html.Raw(Json.Encode(ViewContext.HttpContext.User.IsInRole("HeadQuarter")));
var _wrole = @Html.Raw(Json.Encode(ViewContext.HttpContext.User.IsInRole("Admin")));
_hrole 和 _wrole 是布尔值,它们是真还是假,具体取决于角色。
这是我的 HTML 代码:
<ul class="nav navbar-nav">
<li class="dropdown" ng-repeat="r in Menu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{r.Name}}</a>
<ul class="dropdown-menu" ng-include="'_nestedMenuTemplate'" ng-init="Menu = r.SubMenu"></ul>
</li>
</ul>
【问题讨论】:
-
_hrole和_wrole不会是boolean- 它们是string。如果您想要boolean,请使用var _hrole = @Html.Raw(Json.Encode(ViewContext.HttpContext.User.IsInRole("HeadQuarter"))) -
感谢指正。我现在是真还是假,但仍然不知道如何显示隐藏它
-
修复代码缩进后,您似乎在
$scope.Menu中缺少一个闭合的}大括号。 -
您提供了带有菜单数据的代码,我看到您有变量来确定人员的角色。我没有看到任何试图实际显示或隐藏菜单的代码。您尝试了哪些方法,取得了哪些成果?
-
基本上我不知道显示隐藏它这就是为什么我在这里发布一个问题来帮助我实现我的目标。如果可以的话,请
标签: jquery angularjs json asp.net-mvc