ABP入门教程13 - 更新菜单
菜单更新
在展示层(即JD.CRS.Web.Mvc)的Startup下打开CRSNavigationProvider.cs //用以存放菜单相关信息
修改如下
using Abp.Application.Navigation;
using Abp.Localization;
using JD.CRS.Authorization; namespace JD.CRS.Web.Startup
{
/// <summary>
/// This class defines menus for the application.
/// </summary>
public class CRSNavigationProvider : NavigationProvider
{
public override void SetNavigation(INavigationProviderContext context)
{
context.Manager.MainMenu
.AddItem( //一级菜单 - 首页
new MenuItemDefinition(
PageNames.Home,
L("HomePage"),
url: "",
icon: "home",
requiredPermissionName: PermissionNames.Pages_Home
)
)
.AddItem( //一级菜单 - 基础数据
new MenuItemDefinition(
"Data",
L("Data"),
icon: "storage"
).AddItem( //二级菜单 - 办公室设置
new MenuItemDefinition(
PageNames.Office,
L("Office"),
url: "Office",
requiredPermissionName: PermissionNames.Pages_Office
)
).AddItem( //二级菜单 - 院系设置
new MenuItemDefinition(
PageNames.Department,
L("Department"),
url: "Department",
requiredPermissionName: PermissionNames.Pages_Department
)
).AddItem( //二级菜单 - 课程设置
new MenuItemDefinition(
PageNames.Course,
L("Course"),
url: "Course",
requiredPermissionName: PermissionNames.Pages_Course
)
).AddItem( //二级菜单 - 教职员设置
new MenuItemDefinition(
PageNames.Instructor,
L("Instructor"),
url: "Instructor",
requiredPermissionName: PermissionNames.Pages_Instructor
)
).AddItem( //二级菜单 - 学生设置
new MenuItemDefinition(
PageNames.Student,
L("Student"),
url: "Student",
requiredPermissionName: PermissionNames.Pages_Student
)
)
)
.AddItem( //一级菜单 - 综合服务
new MenuItemDefinition(
"Service",
L("Service"),
icon: "business"
).AddItem( //二级菜单 - 教职员办公室设置
new MenuItemDefinition(
PageNames.OfficeInstructor,
L("OfficeInstructor"),
url: "OfficeInstructor"
)
).AddItem( //二级菜单 - 院系主任设置
new MenuItemDefinition(
PageNames.DepartmentInstructor,
L("DepartmentInstructor"),
url: "DepartmentInstructor"
)
).AddItem( //二级菜单 - 院系课程设置
new MenuItemDefinition(
PageNames.DepartmentCourse,
L("DepartmentCourse"),
url: "DepartmentCourse"
)
).AddItem( //二级菜单 - 教职员课程设置
new MenuItemDefinition(
PageNames.InstructorCourse,
L("InstructorCourse"),
url: "InstructorCourse"
)
).AddItem( //二级菜单 - 学生课程设置
new MenuItemDefinition(
PageNames.StudentCourse,
L("StudentCourse"),
url: "StudentCourse"
)
)
)
.AddItem( //一级菜单 - 管理报表
new MenuItemDefinition(
"Report",
L("Report"),
icon: "poll"
).AddItem( //二级菜单 - 办公室报表
new MenuItemDefinition(
PageNames.OfficeReport,
L("OfficeReport"),
url: "OfficeReport",
requiredPermissionName: PermissionNames.Pages_OfficeReport
)
).AddItem( //二级菜单 - 院系报表
new MenuItemDefinition(
PageNames.DepartmentReport,
L("DepartmentReport"),
url: "DepartmentReport",
requiredPermissionName: PermissionNames.Pages_DepartmentReport
)
).AddItem( //二级菜单 - 课程报表
new MenuItemDefinition(
PageNames.CourseReport,
L("CourseReport"),
url: "CourseReport",
requiredPermissionName: PermissionNames.Pages_CourseReport
)
).AddItem( //二级菜单 - 教职员报表
new MenuItemDefinition(
PageNames.InstructorReport,
L("InstructorReport"),
url: "InstructorReport",
requiredPermissionName: PermissionNames.Pages_InstructorReport
)
).AddItem( //二级菜单 - 学生报表
new MenuItemDefinition(
PageNames.StudentReport,
L("StudentReport"),
url: "StudentReport",
requiredPermissionName: PermissionNames.Pages_StudentReport
)
)
)
.AddItem( //一级菜单 - 系统设置
new MenuItemDefinition(
"Setting",
L("Setting"),
icon: "settings"
).AddItem( //二级菜单 - 租户管理
new MenuItemDefinition(
PageNames.Tenants,
L("Tenants"),
url: "Tenants",
requiredPermissionName: PermissionNames.Pages_Tenants
)
).AddItem( //二级菜单 - 用户管理
new MenuItemDefinition(
PageNames.Users,
L("Users"),
url: "Users",
requiredPermissionName: PermissionNames.Pages_Users
)
).AddItem( //二级菜单 - 角色管理
new MenuItemDefinition(
PageNames.Roles,
L("Roles"),
url: "Roles",
requiredPermissionName: PermissionNames.Pages_Roles
)
)
)
.AddItem( //一级菜单 - 关于
new MenuItemDefinition(
PageNames.About,
L("About"),
url: "About",
icon: "info",
requiresAuthentication: true
)
);
} private static ILocalizableString L(string name)
{
return new LocalizableString(name, CRSConsts.LocalizationSourceName);
}
}
}
权限更新
在领域层(即JD.CRS.Core)的Authorization下打开CRSAuthorizationProvider.cs //用以存放权限相关信息
修改如下
using Abp.Authorization;
using Abp.Localization;
using Abp.MultiTenancy; namespace JD.CRS.Authorization
{
public class CRSAuthorizationProvider : AuthorizationProvider
{
private static ILocalizableString L(string name)
{
return new LocalizableString(name, CRSConsts.LocalizationSourceName);
}
public override void SetPermissions(IPermissionDefinitionContext context)
{
context.CreatePermission(PermissionNames.Pages_Home, L("Home"));
context.CreatePermission(PermissionNames.Pages_Office, L("Office"));
context.CreatePermission(PermissionNames.Pages_Department, L("Department"));
context.CreatePermission(PermissionNames.Pages_Course, L("Course"));
context.CreatePermission(PermissionNames.Pages_Instructor, L("Instructor"));
context.CreatePermission(PermissionNames.Pages_Student, L("Student"));
context.CreatePermission(PermissionNames.Pages_OfficeInstructor, L("OfficeInstructor"));
context.CreatePermission(PermissionNames.Pages_DepartmentInstructor, L("DepartmentInstructor"));
context.CreatePermission(PermissionNames.Pages_DepartmentCourse, L("DepartmentCourse"));
context.CreatePermission(PermissionNames.Pages_InstructorCourse, L("InstructorCourse"));
context.CreatePermission(PermissionNames.Pages_StudentCourse, L("StudentCourse"));
context.CreatePermission(PermissionNames.Pages_OfficeReport, L("OfficeReport"));
context.CreatePermission(PermissionNames.Pages_DepartmentReport, L("DepartmentReport"));
context.CreatePermission(PermissionNames.Pages_CourseReport, L("CourseReport"));
context.CreatePermission(PermissionNames.Pages_InstructorReport, L("InstructorReport"));
context.CreatePermission(PermissionNames.Pages_StudentReport, L("StudentReport"));
context.CreatePermission(PermissionNames.Pages_Tenants, L("Tenants"), multiTenancySides: MultiTenancySides.Host);
context.CreatePermission(PermissionNames.Pages_Users, L("Users"));
context.CreatePermission(PermissionNames.Pages_Roles, L("Roles"));
}
}
}
关联更新
与菜单/权限关联的两个静态类也需要更新
JD.CRS.Web.Mvc\Startup\PageNames.cs //用以存放菜单相关静态信息
namespace JD.CRS.Web.Startup
{
public class PageNames
{
public const string Home = "Home";
public const string Office = "Office";
public const string Department = "Department";
public const string Course = "Course";
public const string Instructor = "Instructor";
public const string Student = "Student";
public const string OfficeInstructor = "OfficeInstructor";
public const string DepartmentInstructor = "DepartmentInstructor";
public const string DepartmentCourse = "DepartmentCourse";
public const string InstructorCourse = "InstructorCourse";
public const string StudentCourse = "StudentCourse";
public const string OfficeReport = "OfficeReport";
public const string DepartmentReport = "DepartmentReport";
public const string CourseReport = "CourseReport";
public const string InstructorReport = "InstructorReport";
public const string StudentReport = "StudentReport";
public const string Tenants = "Tenants";
public const string Users = "Users";
public const string Roles = "Roles";
public const string About = "About";
}
}
JD.CRS.Core\Authorization\PermissionNames.cs //用以存放权限相关静态信息
namespace JD.CRS.Authorization
{
public static class PermissionNames
{
public const string Pages_Home = "Pages.Home";
public const string Pages_Data = "Menu.Data";
public const string Pages_Operation = "Menu.Operation";
public const string Pages_Report = "Menu.Report";
public const string Pages_Setting = "Menu.Setting";
public const string Pages_About = "Pages.About";
public const string Pages_Office = "Pages.Office";
public const string Pages_Department = "Pages.Department";
public const string Pages_Course = "Pages.Course";
public const string Pages_Instructor = "Pages.Instructor";
public const string Pages_Student = "Pages.Student";
public const string Pages_OfficeInstructor = "Pages.OfficeInstructor";
public const string Pages_DepartmentInstructor = "Pages.DepartmentInstructor";
public const string Pages_DepartmentCourse = "Pages.DepartmentCourse";
public const string Pages_InstructorCourse = "Pages.InstructorCourse";
public const string Pages_StudentCourse = "Pages.StudentCourse";
public const string Pages_OfficeReport = "Pages.OfficeReport";
public const string Pages_DepartmentReport = "Pages.DepartmentReport";
public const string Pages_CourseReport = "Pages.CourseReport";
public const string Pages_InstructorReport = "Pages.InstructorReport";
public const string Pages_StudentReport = "Pages.StudentReport";
public const string Pages_Tenants = "Pages.Tenants";
public const string Pages_Users = "Pages.Users";
public const string Pages_Roles = "Pages.Roles";
}
}
ABP入门教程13 - 更新菜单的更多相关文章
- ABP入门教程14 - 更新多语言
点这里进入ABP入门教程目录 设置语种 新增语种 数据库操作 打开多语言表AbpLanguages,添加一条记录. 程序操作 在基础设施层(即JD.CRS.EntityFrameworkCore)的\ ...
- ABP入门教程0 - 目录
ABP入门教程 本教程主要讲解如何基于ABP实现CURD(增删改查)示例. 源码已分享: GitHub Gitee ABP入门教程0 - 目录 ABP入门教程1 - 开篇 ABP入门教程2 - ...
- ABP入门教程7 - 基础设施层更新数据库
点这里进入ABP入门教程目录 设置数据库 在基础设施层(即JD.CRS.EntityFrameworkCore)打开数据库环境设置 JD.CRS.EntityFrameworkCore/EntityF ...
- ABP入门教程12 - 展示层实现增删改查-脚本
点这里进入ABP入门教程目录 创建目录 在展示层(即JD.CRS.Web.Mvc)的\wwwroot\view-resources\Views\下新建文件夹Course //用以存放Course相关脚 ...
- ABP(现代ASP.NET样板开发框架)系列之2、ABP入门教程
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之2.ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...
- 基于DDD的现代ASP.NET开发框架--ABP系列之2、ABP入门教程
基于DDD的现代ASP.NET开发框架--ABP系列之2.ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boi ...
- ABP入门教程
ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应 ...
- ABP入门教程5 - 界面调整
点这里进入ABP入门教程目录 调整前 调整后 调整项 页面标题 把favicon.ico替换为指定Logo JD.CRS.Web.Mvc\wwwroot\favicon.ico 顶部工具栏 把logo ...
- ABP入门教程8 - 应用层创建应用服务
点这里进入ABP入门教程目录 创建目录 在应用层(即JD.CRS.Application)下创建文件夹Course //用以存放Course相关应用服务 在JD.CRS.Application/Cou ...
随机推荐
- alibaba/flutter_boost
flutterBoost使用笔记 新一代Flutter-Native混合解决方案. FlutterBoost是一个Flutter插件,它可以轻松地为现有原生应用程序提供Flutter混合集成方案.Fl ...
- IT兄弟连 HTML5教程 CSS3属性特效 3D变换3
5 3D旋转 在三维变形中,我们可以让元素在任何轴旋转.为此,CSS3新增了三个旋转函数:rotateX().rotateY()和rotateZ().使用rotateX()函数允许一个元素围绕X轴旋 ...
- Linux下设置mysql允许远程连接
最近在Linux上安装了Mysql,然后在Windows环境下通过Navicat来连接时,出现报错:1045 Access denied for user 'root'@'XXX' (using pa ...
- Xshell/Xftp连接Linux速度非常慢(已解决)
原因: 在使用shell连接虚拟机时连接等待时间太长,ssh的服务端在连接时会自动检测dns环境是否一致导致的,修改为不检测即可! 解决方案: 1.打开sshd服务的配置文件/etc/ssh/sshd ...
- Android 获取当前IP地址
首先设置用户权限 <uses-permission android:name="android.permission.INTERNET"></uses-permi ...
- netcore 2.2 使用 AutoMapper 实现实体之间映射
一.什么是AutoMapper? AutoMapper是一个简单的对象映射框架(OOM),将一个对象映射到另一个对象. 二.AutoMapper的好处 以前的时候我们将DTO对象转换为Model对象时 ...
- xshell破解
1.下载注册版本 第一步.打开netsarang公司的官方中文网站,https://www.netsarang.com/zh/all-downloads,选择Xshell6下载 第二步.选择试 ...
- axios统一接口管理及优化
之前我写了一篇文章,分享了自己的项目中对于接口管理的方法.总结下来就是:定义接口文件--withAxios导出--调用接口方法.这样实现了接口的统一管理和调用接口的语义化与简单化. 根据在项目的使用, ...
- vue - Error: Can't resolve '@/assets/img/github.svg (vue-cli3.0,无法解析.svg图片,已解决)
用vue脚手架(vue-cli3.0)生成的目录,无法解析.svg图片的问题 <img src="@/assets/img/github.svg" alt="git ...
- iOS中去除重复的数据
本人只用了其中一个功能: 需求:一个已知数组arr,判断一个新字符str是否已经存在于arr中,如果不存在,则存入数组arr中 //去重 if (![arr containsObject:str]) ...