点这里进入ABP入门教程目录

菜单更新

在展示层(即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 - 更新菜单的更多相关文章

  1. ABP入门教程14 - 更新多语言

    点这里进入ABP入门教程目录 设置语种 新增语种 数据库操作 打开多语言表AbpLanguages,添加一条记录. 程序操作 在基础设施层(即JD.CRS.EntityFrameworkCore)的\ ...

  2. ABP入门教程0 - 目录

    ABP入门教程 本教程主要讲解如何基于ABP实现CURD(增删改查)示例. 源码已分享:   GitHub   Gitee ABP入门教程0 - 目录 ABP入门教程1 - 开篇 ABP入门教程2 - ...

  3. ABP入门教程7 - 基础设施层更新数据库

    点这里进入ABP入门教程目录 设置数据库 在基础设施层(即JD.CRS.EntityFrameworkCore)打开数据库环境设置 JD.CRS.EntityFrameworkCore/EntityF ...

  4. ABP入门教程12 - 展示层实现增删改查-脚本

    点这里进入ABP入门教程目录 创建目录 在展示层(即JD.CRS.Web.Mvc)的\wwwroot\view-resources\Views\下新建文件夹Course //用以存放Course相关脚 ...

  5. ABP(现代ASP.NET样板开发框架)系列之2、ABP入门教程

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之2.ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

  6. 基于DDD的现代ASP.NET开发框架--ABP系列之2、ABP入门教程

    基于DDD的现代ASP.NET开发框架--ABP系列之2.ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boi ...

  7. ABP入门教程

    ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应 ...

  8. ABP入门教程5 - 界面调整

    点这里进入ABP入门教程目录 调整前 调整后 调整项 页面标题 把favicon.ico替换为指定Logo JD.CRS.Web.Mvc\wwwroot\favicon.ico 顶部工具栏 把logo ...

  9. ABP入门教程8 - 应用层创建应用服务

    点这里进入ABP入门教程目录 创建目录 在应用层(即JD.CRS.Application)下创建文件夹Course //用以存放Course相关应用服务 在JD.CRS.Application/Cou ...

随机推荐

  1. inux 磁盘监控分析

    一.查看磁盘空间  1. df -h Size 分割区总容量 Used 已使用的大小 Avail 剩下的大小 Use% 使用的百分比 Mounted on 路径地址 2.查看目录的空间 du -sh  ...

  2. 【转载】单线程Redis性能为何如此之高?

    Redis的优势 性能高不仅跟线程模型有关,它有很多原因,主要有如下3点: 基于内存: 单线程,但IO多路复用的利用率高: 数据结构为高性能优化. 下面分别阐述. Redis的优势:基于内存 性能高低 ...

  3. python函数中参数的传递

    Python唯一支持的参数传递方式是『共享传参』(call by sharing)多数面向对象语言都采用这一模式,包括Ruby.Smalltalk和Java(Java的引用类型是这样,基本类型按值传递 ...

  4. shiro实战(1)--web

    目录结构:  数据库结构: 一·web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app ...

  5. 使用系统定时器SysTick实现精确延时微秒和毫秒函数

    SysTick定时器简介 SysTick定时器是存在于系统内核的一个滴答定时器,只要是ARM Cortex-M0/M3/M4/M7内核的MCU都包含这个定时器,它是一个24位的递减定时器,当计数到 0 ...

  6. 微信支付 第一篇 JSAPI 支付配置与获取 OpenID

    开通微信支付支付产品 首先要在微信支付申请成为 微信支付商户. 选择开通具体的支付产品 成为微信支付商户后在管理后台选择微信支付中的具体支付产品并申请开通如 JSAPI . 将支付商户与公众号关联 这 ...

  7. Jenkins使用SSH构建Go项目并执行

    目录 下载插件 配置要部署的服务器 构建项目 Jenkinx可以帮助我们通过SSH插件,将项目直接部署到指定的服务器. 下载插件 (1)点击左侧的"系统管理"菜单 ,然后点击 (2 ...

  8. PHP 日期之间所有日期

    /** * 获取起止日期之间所有日期 * @param $sdate * @param $edate * @return array */ function get_dates($sdate, $ed ...

  9. C# SendAysnc 超时

      业务方法 @@@code public override async Task<List<(IPEndPoint endPoint, byte[] data)>> Send ...

  10. Dotnetcore或owin程序启用SSL的方法

    https端口需要绑定SSL证书 操作方法与步骤如下: 在IIS中创建证书 查看证书的指纹 使用命令行绑定端口与证书 上述第三步也可以更换为创建一个新的空网站,绑定https端口为相同端口并绑定证书, ...