<<ABP文档>> 导航

文档目录

本节内容:

  • 创建菜单

    • 注册导航供应器
  • 显示菜单

每个web应用都有一些菜单用来在页面/屏幕之间导航,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主要拥有一个唯一的name,一个本地化的display name,一个url和一个icon。

  • 一个菜单项,可能需要一个许可,用来把自己显示给一个特殊的用户(查看授权文档),requiredPermissionName属性就是用在这种情况里。
  • 一个菜单项,可能依赖于一个功能,featureDependency属性就是用在这种情况里。
  • 一个菜单项,可以定义一个customData(用户数据)和order(顺序位置)。

INavigationProviderContext拥有获取菜单项、添加菜单和菜单项的方法,因此,不同模块可以添加自己的项到菜单里。

一个应用里可能有一个或多个菜单,context.Manager.MainMenu指向默认的主菜单,我们可以用context.Manager.Menus属性创建并添加更多的菜单。

注册导航供应器

在创建完导航供应器后,应该在我们模块的PreInitialize事件里注册它:

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

显示菜单

我们可以注入IUserNavigationManager,用它来获取菜单项并显示给用户,因此我们可以在服务端创建菜单。

ABP自动生成一个javascript api,在客户端里,用它获取菜单和项 ,abp.nav命名空间里的方法和对象就是用来支持这些操作,例如:可以用abp.nav.menus.MainMenu获取应用的主菜单,因此我们也可以在客户端创建菜单。

ABP模板使用这个系统为用户创建并显示菜单。你可用模板创建一个项目并查看源码,获取更多信息。

kid1412附:英文原文:http://www.aspnetboilerplate.com/Pages/Documents/Navigation

时间: 2024-10-12 17:35:12

<<ABP文档>> 导航的相关文章

[toc]文档导航 侧边栏目录 markdown

[toc]文档导航https://www.so.com/s?q=%5Btoc%5D文档导航&src=srp&fr=none&psid=5628fdc7ed64cf669853965c2f34fed6 https://blog.csdn.net/zhuqinfeng/article/details/78914778 https://blog.csdn.net/HaleyPKU/article/details/51226704 https://blog.csdn.net/weixin_

&lt;&lt;ABP文档 - 框架&gt;&gt; 1.4 启动配置

文档目录 本节内容: 配置ABP 替换内置服务 配置模块 为一个模块创建配置 ABP在启动时,提供基础框架和模型来配置和模块化. 配置ABP 在预初始化事件中进行配置,示例: public class SimpleTaskSystemModule : AbpModule { public override void PreInitialize() { //为你的应用添加语言 Configuration.Localization.Languages.Add(new LanguageInfo("en

&lt;&lt;ABP文档&gt;&gt; 异常处理

文档目录 本节内容: 简介 启用错误处理 非AJAX请求 显示异常 UserFriendlyException Error 模型 AJAX 请求 异常事件 简介 这个方法针对Asp.net Mvc和Web Api,如果你对Asp.net Core感兴趣,请看Asp.net Core文档. 在一个Web应用里,异常通常在Mvc控制器的Action或Web Api 控制器的Action里被处理,当一个异常姓时,应用的用户会通过某种方式收到错误信息和错误的可能原因. 如果一个错误发生在平常的HTTP请

ABP文档 - 对象与对象之间的映射

文档目录 本节内容: 简介 IObjectMapper 接口 集成 AutoMapper 安装 创建映射 自动映射的特性 自定义映射 扩展方法 MapTo 单元测试 预定义的映射 LocalizableString -> string 注入 IMapper 简介 把一个对象映射到另一个相似的对象很常见,两个对象(类)具有相似或相同的属性,它们之间要互相映射,其实这项工作重复且无聊,考虑一个典型的应用服务方法,如下: public class UserAppService : Applicatio

&lt;&lt;ABP文档&gt;&gt; 通知系统

文档目录 本节内容: 简介 发送模式 通知类型 通知数据 通知重要性 关于通知持久化 订阅通知 发布通知 用户通知管理器 实时通知 客户端 通知存储 通知定义 简介 通知用来告知用户系统里特定的事件发生了,ABP提供一个发布/订阅,它基于实时通知基础框架. 发送模式 有两种方式可以发送通知给用户: 用户订阅一个特定的通知类型,然后我们发布一个此类型的通知,它会分发给所有订阅的用户,这就是发布/订阅模式. 我们可以直接发送一个通知给目标用户(users). 通知类型 有两种通知类型: 一般通知:任

&lt;&lt;ABP文档&gt;&gt; 嵌入的资源文件

文档目录 本节内容: 简介 创建嵌入的文件 暴露嵌入的文件 使用嵌入的文件 简介 一个web应用里,客户端包含javascript,css,xml等文件,这此文件被添加到一个web项目后,发布成独立的文件,有时,我们需要把一些这样的文件打包入一个程序集(一个类库项目,一个Dll文件),并且作为嵌入式资源文件部署在这个程序集里,ABP提供了一个基础架构,方便地处理这件事. 创建嵌入的文件 我们首先要创建一个资源文件并把它标记为嵌入式资源,任何程序集都可以包含嵌入式资源文件,假设我们有一个名为“Ab

&lt;&lt;ABP文档&gt;&gt; Mvc 控制器

文档目录 本节内容: 简介 AbpController基类 本地化 其它 过滤 异常处理和结果包装 审计日志 验证 授权 工作单元 反伪造 模型绑定器 简介 ABP通过nuget包Abp.Web.Mvc集成到Asp.net Mvc 控制器.你可以像往常那样创建普通的Mvc控制器,依赖注入可以对普通的Mvc控制器起作用,但你应当使你的控制继承自AbpController,它提供了许多好处和更好的集成到ABP. AbpController基类 这是一个简单的继承自AbpController的控制器:

&lt;&lt;ABP文档&gt;&gt; Web Api 控制器

文档目录 本节内容: 简介 AbpApiController 基类 本地化 其它 过滤 审计日志 授权 防伪造过滤 工作单元 结果包装和异常处理 结果缓存 验证 模块绑定器 简介 通过Abp.Web.Api的nuget包,把ABP集成到Asp.net Web Api 控制器里.你可以像之前做的一样创建平常的Asp.net Web Api控制器,依赖注入会很好地为这些平常的ApiController工作,但你要把你的控制器继承于AbpApiController,它提供了许多好处和更好地集成到ABP

&lt;&lt;ABP文档&gt;&gt; 审计日志

文档目录 本节内容: 简介 关于 IAuditingStore 配置 通过特性启用/禁用 注意 简介 维基百科:“一个审计追踪(也叫审计日志)是一个安全相关的时序记录.记录组.和/或记录源和目标,作为任何时候一个特殊操作带来影响的一序列活动的书面文件”. ABP提供一个基础框架来自动记录所有与应用的交互,它能记录有意的方法调用和调用者信息与参数. 基本上,保存的字段有:相关的租户id,调用者id,被调用的服务名(被调用方法的类名),被调用的方法名,执行参数(序列化成Json),执行时间,执行时长