ABP 番外篇-菜单
- public class LearningMpaAbpNavigationProvider : NavigationProvider
- {
- public override void SetNavigation(INavigationProviderContext context)
- {
- context.Manager.MainMenu
- .AddItem(
- new MenuItemDefinition(
- "Home",
- L("HomePage"),
- url: "",
- icon: "fa fa-home",
- requiresAuthentication: true
- )
- ).AddItem(
- new MenuItemDefinition(
- "Tenants",
- L("Tenants"),
- url: "Tenants",
- icon: "fa fa-globe",
- requiredPermissionName: PermissionNames.Pages_Tenants
- )
- ).AddItem(
- new MenuItemDefinition(
- "Users",
- L("Users"),
- url: "Users",
- icon: "fa fa-users",
- requiredPermissionName: PermissionNames.Pages_Users
- )
- ).AddItem(
- new MenuItemDefinition(
- "About",
- L("About"),
- url: "About",
- icon: "fa fa-info"
- )
- );
- }
- }
该文件中默认定义了Home、Tenants、Users、About四个菜单
1、Home菜单设置了requiresAuthentication: true
,即只有登陆后才会显示该菜单。
2、Tenants和Users菜单设置了requiredPermissionName
属性,即用户具有指定的权限时才显示菜单。
3、About菜单没有限制,默认显示。
注:每一个菜单项都是一个MenuItemDefinition
,其中主要包括Name
(唯一名称),DisplayName
(本地化显示名称),Url
(菜单跳转),Icon
(指定菜单图标)。
一、内菜单
二、外菜单
- .AddItem(
- new MenuItemDefinition(
- "DictionaryManager",
- L("信息导入"),
- url: "#DictionaryManager",
- icon: "fa fa-info",
- requiresAuthentication: true
- ).AddItem(
- new MenuItemDefinition(
- "Law",
- L("学生数据"),
- url: "#Law",
- icon: "fa fa-info",
- requiresAuthentication: true)
- )
- );
三、权限菜单
1、.Core->Authorization文件夹->AppPermissions类内添加权限码
- public const string Pages_BasicDataExport = "Pages.BasicDataExport";
规范 Pages.下 一级的
二级的则是
public const string Pages_BasicDataExport = "Pages.BasicDataExport.Edit";
public const string Pages_BasicDataExport = "Pages.BasicDataExport.Update";
2、.Core->Authorization文件夹->AppAuthorizationProvider类内添加进行创建菜单
- // 创建权限
- var per = context.CreatePermission(AppPermissions.Pages_BasicDataExport, L("BasicDataExport"));
做完就会出现在tree 权限数里
这里两个参数 AppPermissions.Pages_BasicDataExport 就是权限菜单码唯一标识 L("BasicDataExport") 则是 .Core->Localization->CloudTimeTable->语言包里面的name编码
3、
- .AddItem(
- new MenuItemDefinition(
- "DictionaryManager",
- L("信息导入"),
- url: "#DictionaryManager",
- icon: "fa fa-info",
- permissionDependency: new SimplePermissionDependency(AppPermissions.Pages_BasicDataExport)
- ).AddItem(
- new MenuItemDefinition(
- "Law",
- L("学生数据"),
- url: "#Law",
- icon: "fa fa-info",
- requiresAuthentication: true)
- )
- );
注意:L()里面写字符标识 在 比如 L("BasicsExport"), 本地化配置中 <text name="BasicsExport" value="信息导入" />
四、菜单控制器操作视图展示
都在.MVC层->Areas文件夹->AppAreaName文件夹
按钮生成的代码
- .AddItem(
- new MenuItemDefinition(
- "DictionaryManager",
- L("BasicsExport"),
- url: "#DictionaryManager",
- icon: "fa fa-info",
- permissionDependency: new SimplePermissionDependency(AppPermissions.Pages_BasicDataExport)
- ).AddItem(
- new MenuItemDefinition(
- "Law",
- L("ClassroomInfo"),
- url: "AppAreaName/StudentInfo",
- icon: "fa fa-info",
- requiresAuthentication: true)
- )
- .AddItem(
- new MenuItemDefinition(
- "Law",
- L("TeacherInfo"),
- url: "#Law",
- icon: "fa fa-info",
- requiresAuthentication: true)
- )
- .AddItem(
- new MenuItemDefinition(
- "Law", //一个常量,控制菜单是否被选中
- L("StudentInfo"), //菜单显示名称,在语言文件中配置
- url: "AppAreaName/StudentInfo", //菜单路径
- icon: "fa fa-info", //菜单图标
- requiresAuthentication: true)
- )
- .AddItem(
- new MenuItemDefinition(
- "Law",
- L("CourseInfo"),
- url: "#Law",
- icon: "fa fa-info",
- requiresAuthentication: true)
- )
- );
控制器的代码
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- using Abp.AspNetCore.Mvc.Authorization;
- using Microsoft.AspNetCore.Mvc;
- using YD.CloudTimetable.Authorization;
- using YD.CloudTimetable.Web.Controllers;
- namespace YD.CloudTimetable.Web.Mvc.Areas.AppAreaName.Controllers
- {
- [Area("AppAreaName")]
- [AbpMvcAuthorize(AppPermissions.Pages_BasicDataExport)]
- public class StudentInfoController : CloudTimetableControllerBase
- {
- public ActionResult Index()
- {
- return View();
- }
- }
- }
前端代码
- @using Abp.Application.Services.Dto
- @using YD.CloudTimetable.Authorization
- @using YD.CloudTimetable.Web.Areas.AppAreaName.Models.Roles
- @using YD.CloudTimetable.Web.Areas.AppAreaName.Startup
- @model RoleListViewModel
- @{
- ViewBag.CurrentPageName = AppAreaNamePageNames.Common.Roles;
- }
- @section Scripts
- {
- <script abp-src="/view-resources/Areas/AppAreaName/Views/_Bundles/role-list.js" asp-append-version="true"></script>
- }
- hello
注意:菜单未被选中
三步骤
1、.mvc->Areas->AppAreaName->Startup->AppAreaNameNavigationProvider.cs类内
更改json菜单的生成
- .AddItem(
- new MenuItemDefinition(
- "DictionaryManager",
- L("BasicsExport"),
- url: "#DictionaryManager",
- icon: "fa fa-info",
- permissionDependency: new SimplePermissionDependency(AppPermissions.Pages_BasicDataExport)
- ).AddItem(
- new MenuItemDefinition(
- "Law",
- L("ClassroomInfo"),
- url: "AppAreaName/StudentInfo",
- icon: "fa fa-info",
- requiresAuthentication: true)
- )
- .AddItem(
- new MenuItemDefinition(
- "Law",
- L("TeacherInfo"),
- url: "#Law",
- icon: "fa fa-info",
- requiresAuthentication: true)
- )
- .AddItem(
- new MenuItemDefinition(
- AppAreaNamePageNames.Common.BasicData, //这里建立一个常量标识 控制菜单是否被选中
- L("StudentInfo"),
- url: "AppAreaName/StudentInfo",
- icon: "fa fa-info",
- requiresAuthentication: true)
- )
- .AddItem(
- new MenuItemDefinition(
- "Law",
- L("CourseInfo"),
- url: "#Law",
- icon: "fa fa-info",
- requiresAuthentication: true)
- )
- );
2、常量在
.mvc->Areas->AppAreaName->Startup->AppAreaNamePageNames.cs类内
- public const string BasicData = "BasicData.StudentInfo";
- BasicData与StudentInfo 目前不知是不是随便创建的-具体参考其他变量
3、视图
- @using YD.CloudTimetable.Web.Areas.AppAreaName.Startup
- @{
- ViewBag.CurrentPageName = AppAreaNamePageNames.Common.BasicData;
- //上面所定义就是这个常量,作用就是选中菜单时会高亮
- }
- hello
五、权限过滤
https://blog.csdn.net/wangwengrui40/article/details/86677672
ABP 番外篇-菜单的更多相关文章
- ABP 番外篇-容器
一. @using YD.CloudTimetable.Web.Areas.AppAreaName.Startup @{ ViewBag.CurrentPageName = AppAreaNamePa ...
- 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- 可视化(番外篇)——SWT总结
本篇主要介绍如何在SWT下构建一个应用,如何安装SWT Designer并破解已进行SWT的可视化编程,Display以及Shell为何物.有何用,SWT中的常用组件.面板容器以及事件模型等. 1.可 ...
- 番外篇--Moddule Zero多租户管理
番外篇--Moddule Zero多租户管理 2.1.1 关于多租户 强烈建议阅读这个文件前阅读多租户文档. 2.1.2 启用多租户 ASP.NET Boilerplate和module-zero可以 ...
- iOS冰与火之歌(番外篇) - 基于PEGASUS(Trident三叉戟)的OS X 10.11.6本地提权
iOS冰与火之歌(番外篇) 基于PEGASUS(Trident三叉戟)的OS X 10.11.6本地提权 蒸米@阿里移动安全 0x00 序 这段时间最火的漏洞当属阿联酋的人权活动人士被apt攻击所使用 ...
- 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV
这次博客园的排版彻底残了..高清版请移步: https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程: 给深度学习入门者的Python快速教程 - 基础篇 给深度 ...
- 可视化(番外篇)——在Eclipse RCP中玩转OpenGL
最近在看有关Eclipse RCP方面的东西,鉴于Gephi是使用opengl作为绘图引擎,所以,萌生了在Eclipse RCP下添加画布,使用opengl绘图的想法,网上有博文详细介绍这方面的内容, ...
- 【重走Android之路】【番外篇】关于==和equals
[重走Android之路][番外篇]关于==和equals 在实际的编程当中,经常会使用==和equals来判断变量是否相同.但是这两种比较方式也常常让人搞得云里雾里摸不着头脑.下面是我个人做的总 ...
- 【重走Android之路】【番外篇】有关于null的一些知识点
[重走Android之路][番外篇]有关于null的一些知识点 1.首先,到底什么是null? null是Java中的一个关键字,用于表示一个空对象引用,但其本身并不是任何类型也不是属于任何对象. ...
随机推荐
- Flask-SQLAlchemy常用操作
一.SQLAlchemy介绍 SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数 ...
- 模拟祭-比萨-题解O(n)
题目描述 233233 [ 233 ] ( 233 ) KikokKikok 得到了一块比萨,他迫不及待地想与妹妹 Kik子和 koko美一同享用它. 比萨是一种圆形的食物.为了将它分给三个人,Kik ...
- Linux VNC安装
cat /etc/centos-release CentOS Linux release 7.4.1708 (Core) uname -r 3.10.0-693.el7.x86_64 VNC下载:ht ...
- mysql 实现树形的遍历
前言:关于多级别菜单栏或者权限系统中部门上下级的树形遍历,oracle中有connect by来实现,mysql没有这样的便捷途径,所以MySQL遍历数据表是我们经常会遇到的头痛问题,下面通过存储过程 ...
- Linux并发与同步专题 (3) 信号量
关键词:Semaphore.down()/up(). <Linux并发与同步专题 (1)原子操作和内存屏障> <Linux并发与同步专题 (2)spinlock> <Li ...
- OPPO Developers Conference(2018.12.26)
时间:2018.12.26地点:北京国家会议中心
- Item 26: 避免对universal引用进行重载
本文翻译自<effective modern C++>,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 如果你需要写一个以名字作为参数,并记录下当前日期和 ...
- Python做windows服务
Python做windows服务(多进程服务),并结束多进程 Python中_,__,__xx__的区别 在注册MyWinService服务时,再使用 "sc delete 服务器名称&qu ...
- Python中的鸡肋多线程
作者:DarrenChan陈驰链接:https://www.zhihu.com/question/23474039/answer/269526476来源:知乎著作权归作者所有.商业转载请联系作者获得授 ...
- js处理ajax返回的json数组
一.json对象和json数组的区别 jsonObject = {} # json对象 jsonArray=[{},{}] # json数组 二.数据处理 前台接收到后台传过来的json数组实际上是一 ...