zoukankan      html  css  js  c++  java
  • ABP(现代ASP.NET样板开发框架)系列之22、ABP展现层——导航栏设置

    点这里进入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架构设计交流群      ABP架构设计交流2群: 579765441ABP架构设计交流群2

     

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

  • 相关阅读:
    oracle中 start with .. connect by prior.. 用法简介
    Java中com.jcraft.jsch.ChannelSftp讲解
    linux修改系统时间和linux查看时区、修改时区的方法
    map.containsKey
    Struts2中struts.multipart.maxSize配置
    oracle定时器job的使用
    java的System.getProperty()方法可以获取的值
    夜间模式的开启与关闭,父模板的制作
    开始Flask项目
    完成登录与注册页面的前端
  • 原文地址:https://www.cnblogs.com/mienreal/p/4690791.html
Copyright © 2011-2022 走看看