zoukankan      html  css  js  c++  java
  • 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属性。
    • 菜单项可以定义一个customDataorder。

      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模板使用这个系统来创建并显示菜单给用户。尝试创建一个模板,查看源代码以了解更多。

    返回主目录

  • 相关阅读:
    HDOJ2010_水仙花数
    npm报错:无法加载文件 D: odejs ode_globalwebpack.ps1,因为在此系统上禁止运行脚本
    百度全景地图使用时提示flash版本过低 如何处理?
    寂静之声 的歌词的中文意思
    国产电脑操作系统有哪些?
    解决mac系统中npm全局安装提示没有权限的问题
    nodemon运行 提示错误:无法加载文件 C:UsersgxfAppDataRoaming pm odemon.ps1。
    git设置忽略文件及目录
    Element中的Cascader 级联选择器高度不能正常显示如何解决2
    wepy内网环境下进行项目初始化异常处理(Failed to download repo standard: read ECONNRESET)
  • 原文地址:https://www.cnblogs.com/xajh/p/7096630.html
Copyright © 2011-2022 走看看