首页 > 代码库 > ABP官方文档翻译 6.4 导航
ABP官方文档翻译 6.4 导航
导航
- 创建菜单
- 注册导航提供者
- 显示菜单
每一个网络应用都会有一些菜单用来在pages/screens之间导航。ABP提供了通用的基础设施来创建并显示菜单。
创建菜单
应用可以由不同的模块组成,每一个模块都有自己的菜单项。为了定义菜单项,我们需要创建一个继承自NavigationProvider的类。
假定,我们有一个如下所示的主菜单:
- Tasks
- Reports
- Administration
- User management
- 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。
- 菜单项可能需要一个权限来控制显示给特定的用户(参见授权文档)。在这种情况下可以使用requiredPermissionName属性。
- 菜单项可以依赖于特征。这种情况下可以使用featureDependency属性。
- 菜单项可以定义一个customData和order。
INavigationProviderContext有获取已存在菜单项、添加菜单和菜单项的方法。因此,不同的模块可以在菜单上添加他们自己的菜单项。
在应用中可能有一个或多个菜单。context.Manager.MainMenu引用默认的主菜单。我们可以使用context.Manager.Menus属性创建、添加更多菜单。
注册导航提供者
创建导航提供者之后,我们需要在模块的PreInitialize事件中注册它到ABP的配置中:
Configuration.Navigation.Providers.Add<SimpleTaskSystemNavigationProvider>();
显示菜单
IUserNavigationManager可以注入使用来获取菜单项并显示给用户。因此,我们可以在服务端创建菜单。
ABP自动生成一个javascript API在客户端来获取菜单及项。在abp.nav命名空间下的方法和对象可以用来实现此目的。例如,abp.nav.menus.MainMenu用来获取应用的主菜单。因此,我们可以在客户端创建菜单。
ABP模板使用这个系统来创建并显示菜单给用户。尝试创建一个模板,查看源代码以了解更多。
返回主目录
ABP官方文档翻译 6.4 导航