• 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系列文章总目录

  • 相关阅读:
    求助 大家帮忙激励下我吧
    实体培训,特别是对于学历教育中教学理论的一些总结
    天轰穿c#趣味编程系列视频 vs2005/2008 winform实例入门 第二集 学习技巧风暴
    感谢老婆的支持我永远爱你,亲爱的梅
    早上起床晚了,差点迟到,两集视频已经做好
    我带这个班最近两次的作业
    辛辛苦苦几十年,一朝回到解放前我以及我的部分亲人都平安
    天轰穿c#趣味编程系列视频 vs2005/2008 winform实例入门 第一集
    如果有媒体的朋友建议看下这个帖子
    无聊的盗版问题
  • 原文地址:https://www.cnblogs.com/mienreal/p/4690791.html
Copyright © 2020-2023  润新知