点这里进入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. iOS核心动画高级技巧 - 7

    13. 高效绘图 高效绘图 不必要的效率考虑往往是性能问题的万恶之源. ——William Allan Wulf 在第12章『速度的曲率』我们学习如何用Instruments来诊断Core Anima ...

  2. python基础之列表讲解

    列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现. 列表的数据项不需要具有相同的类型 如下图所示,创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可.(接下来的演 ...

  3. docker网络配置

    Docker网络配置 Docker网络模式介绍 Docker在创建容器时有四种网络模式:bridge/host/container/none,bridge为默认不需要用--net去指定,其他三种模式需 ...

  4. C# sync/async 同步/异步

    同步方法 Console.WriteLine($")} {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}******* ...

  5. 持续集成(CI):Jmeter+Ant+Jenkins定时构建

    这里Jenkins的安装部署以及工程项目的整体配置不做赘述,其它博文已经说明,这里主要是赘述Ant的相关配置,build.xml文件配置以及项目中的部分配置 一.build.xml 在Ant的安装目录 ...

  6. 源码分析RocketMQ ACL实现机制

    目录 1.BrokerController#initialAcl 2.PlainAccessValidator 2.1 类图 2.2 构造方法 2.3 parse方法 2.4 validate 方法 ...

  7. 使用PIL将图片转成字符

    注意:转化成txt后,txt的字体使用“宋体”,不能使用“微软雅黑”,否则图像会变形 import numpy as npfrom PIL import Image if __name__ == '_ ...

  8. Python中的测试工具

      当我们在写程序的时候,我们需要通过测试来验证程序是否出错或者存在问题,但是,编写大量的测试来确保程序的每个细节都没问题会显得很繁琐.在Python中,我们可以借助一些标准模块来帮助我们自动完成测试 ...

  9. 对《Java核心技术卷一》读者的一些建议

    <Java核心技术卷一>是唯一可以和<Java编程思想>媲美的一本 Java 入门书.单从技术的角度来看,前者更好一些.但上升到思想层面嘛,自然后者更好,两者的偏重点不同. 思 ...

  10. IPIP.net识别客户端真实访问地址,具体到国家,省,市

    这个IP库实测还是比较准确的,免费版的可以具体到国内城市,国外只能到国家名称,免费版的自己定期更新Ip数据库即可. 以下为C#调用代码 class Program { static void Main ...