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中的一个关键字,用于表示一个空对象引用,但其本身并不是任何类型也不是属于任何对象. ... 
随机推荐
- 联想Y7000安装显卡驱动
			之前看了很多教程,一直在登陆界面循环重启!!! 多半是opengl问题!! https://blog.csdn.net/weixin_42577219/article/details/84313220 ... 
- ActiveMQ后台使用
			版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/nangeali/article/details/81514517默认地址 http://192.16 ... 
- 管理篇:测试Leader应该做哪些事
			基于前面的2篇分享:基础篇和进阶篇,这篇博客,整理了之前大佬的分享:作为一个测试leader,应该做那些事情... 一.负责测试组的工作组织和管理 1.参加软件产品开发前的需求调研和分析: 2.根据需 ... 
- Java内存模型(和堆栈等不是同一层次的划分)
			什么叫Java内存模型? 现代计算机通过指令的重排序来提升计算机的性能,而没有限制条件的指令重排序会使得程序的行为不可预测,JMM就是通过一系列的操作规则限制指令重排序的方式使得指令重排序不会破坏JM ... 
- Python 中的 10 个常见安全漏洞,以及如何避免(上)
			简评:编写安全代码很困难,当你学习一个编程语言.模块或框架时,你会学习其使用方法. 在考虑安全性时,你需要考虑如何避免被滥用,Python 也不例外,即使在标准库中,也存在用于编写应用的不良实践.然而 ... 
- 【原创】研发应该懂的binlog知识(上)
			引言 为什么写这篇文章? 大家当年在学MySQL的时候,为了能够迅速就业,一般是学习一下MySQL的基本语法,差不多就出山找工作了.水平稍微好一点的童鞋呢还会懂一点存储过程的编写,又或者是懂一点索引的 ... 
- shell删除三天前或者三天内的文件
			说明:+n 大于 n, -n 小于 n, n 相等于 n. find / -amin -30 -ls # 查找在系统中最后30分钟访问的文件find / -atime -2 -ls # 查找在系统中最 ... 
- Python-SMTP发送邮件(HTML、图片、附件)
			前言: SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. 一.Python发送HTML ... 
- Krpano教程tour.xml详解
			<krpano version="1.18" //版本号 onstart="" //网页启动时调用的函数 basedir="%FIRSTXML% ... 
- 杭电 1061 Rightmost Digit计算N^N次方的最后一位
			Problem Description Given a positive integer N, you should output the most right digit of N^N. Input ... 
