ABP支持模块化开发,每个模块都可能有自己的菜单,这些菜单需要在模块内部进行维护,调用模块的项目只需要通过MenuContributor执行各个模块的菜单加载就可以了。菜单的维护在模块的Web项目中的Menus目录中,这个目录中有两个cs文件,MenuContributor和Menus:
图片.png
Menus中定义菜单的常量,MenuContributor中加载菜单,在函数ConfigureMainMenuAsync中完成菜单加载,示例代码如下:
context.Menu.Items.Insert(0, new ApplicationMenuItem(WebFlowDesignerMenus.FlowDesigner, l["Menu:FlowDesigner"], "~/FlowDesigner"));
context.Menu.Items.Insert(0, new ApplicationMenuItem(WebFlowDesignerMenus.MindMap, l["Menu:MindMap"], "~/MindMap"));
如果需要判断权限,可以使用context.IsGrantedAsync,示例代码如下:
if (await context.IsGrantedAsync(WebFlowDesignerPermissions.Edit))
如果需要获取当前租户或者用户的信息,可以使用context.ServiceProvider.GetRequiredService获取相应的服务,比如下面的代码获取当前的租户:
var currentTenant = context.ServiceProvider.GetRequiredService(typeof(ICurrentTenant)) as ICurrentTenant;
网友评论