ABP(现代ASP.NET样板开发框架)系列之22、ABP展现层——导航栏设置

时间:2022-08-31 12:50:12

点这里进入ABP系列文章总目录

 

基于DDD的现代ASP.NET开发框架--ABP系列之22、ABP展现层——导航栏设置

 

ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称。

ABP的官方网站http://www.aspnetboilerplate.com

ABP在Github上的开源项目https://github.com/aspnetboilerplate

 


 

每一个WEB应用程序都有导航菜单,Abp也为用户提供了通用的创建和显示菜单方式。

创建菜单

一个应用程序可能包含不同的模块,而每个模块都可能有它自己的菜单项。在Abp中,需要创建一个派生自NavigationProvider的类来定义一个菜单项。

假设我们有一个这样的主菜单:

  • Tasks
  • Reports
  • Administration 1 User Management 2 Role Management

由上可知,Administration菜单项有两个子菜单项。对应的生成方法如下:

public class SimpleTaskSystemNavigationProvider : NavigationProvider
{
public override void SetNavigation(INavigationProviderContext context)
{
context.Manager.MainMenu
.AddItem(
new MenuItemDefinition(
"Tasks",
new LocalizableString("Tasks", "SimpleTaskSystem"),
url:
"/Tasks",
icon:
"fa fa-tasks"
)
).AddItem(
new MenuItemDefinition(
"Reports",
new LocalizableString("Reports", "SimpleTaskSystem"),
url:
"/Reports",
icon:
"fa fa-bar-chart"
)
).AddItem(
new MenuItemDefinition(
"Administration",
new LocalizableString("Administration", "SimpleTaskSystem"),
icon:
"fa fa-cogs"
).AddItem(
new MenuItemDefinition(
"UserManagement",
new LocalizableString("UserManagement", "SimpleTaskSystem"),
url:
"/Administration/Users",
icon:
"fa fa-users",
requiredPermissionName:
"SimpleTaskSystem.Permissions.UserManagement"
)
).AddItem(
new MenuItemDefinition(
"RoleManagement",
new LocalizableString("RoleManagement", "SimpleTaskSystem"),
url:
"/Administration/Roles",
icon:
"fa fa-star",
requiredPermissionName:
"SimpleTaskSystem.Permissions.RoleManagement"
)
)
);
}
}

MenuItemDefinition可以有一个唯一的名字,一个用于本地化显示的名字,一个url和一个icon,此外,菜单项可能需要与特定用户权限相结合(相关权限系统正在开发,暂时还没有说明文档)。

InavigationProviderContext方法能够获取现有的菜单项、添加菜单或菜单项。因此,不同的模块可以添加各自的菜单。

创建完成导航后,还需要在对应模块预初始化时注册到Abp配置文件中:

Configuration.Navigation.Providers.Add<SimpleTaskSystemNavigationProvider>(); 

显示菜单

IuserNavigationManager可以注入、获取和显示菜单。可以在服务器端创建菜单。

Abp自动生成的javascript API使得用户能够在客户端获取菜单,对应的方法和对象在命名空间abp.nav中。例如,在客户端使用abp.nav.menus.MainMenu可以用来获取主菜单。

以上文档展示了Abp如何给用户创建和显示菜单,你可以尝试建立模版、查看源代码以便更深入的学习。

 


 

希望更多国内的架构师能关注到ABP这个项目,也许这其中有能帮助到您的地方,也许有您的参与,这个项目可以发展得更好。

欢迎加QQ群:

ABP架构设计交流群:134710707 ABP(现代ASP.NET样板开发框架)系列之22、ABP展现层——导航栏设置      ABP架构设计交流2群: 579765441ABP(现代ASP.NET样板开发框架)系列之22、ABP展现层——导航栏设置

 

点这里进入ABP系列文章总目录