当前位置: 首页 > news >正文

开源博客项目Blog .NET Core源码学习(27:App.Hosting项目结构分析-15)

  本文学习并分析App.Hosting项目中后台管理页面的角色管理页面。
  角色管理页面用于显示、检索、新建、编辑、删除角色数据同时支持按角色分配菜单权限,以便按角色控制后台管理页面的菜单访问权限。角色管理页面附带一新建及编辑页面,以支撑新建和编辑角色数据,同时还附带权限分配页面,以设置每个角色的菜单权限。整个页面使用了layui中的表格、表单等样式或模块,同时使用zTree组件,并未使用独立的js文件,而是直接在页面内嵌js代码,并调用SystemManage/RoleController的相关函数处理数据。

在这里插入图片描述
  角色管理页面的上半部分显示搜索框,下半部分以表格形式显示全部角色数据或者检索结果。
在这里插入图片描述
  内置的js代码主要用于设置表格样式及处理事件,同时处理搜索事件。调用layui的table.render函数设置表格样式,主要包括:
  1)用elem属性设置表格容器元素,同时用url设置调用SystemManage/RoleController的Index函数分页获取所有角色数据;
  2)用limit、limits、page属性设置数据分页显示;
  3)用toolbar属性设置头部工具栏,指定的元素id定义在_AminLayout.cshtml内,且根据不同的页面显示不同的工具栏内容,在本页面中工具栏中有添加按钮(按钮在系统管理->按钮管理中配置);
  4)用where属性设置调用Index时附加的其它参数;
  5)用cols属性设置表格显示列,其中第一列采用type:‘number’设置为序号列,其它列对应Index函数返回值的属性并以sort属性设置可排序性,角色状态列(源代码应该是忘了改列名称,对应字段EnableMark)采用templet属性以模版函数方式设置以表单中的开关样式显示属性值,最后一列用templet属性以模版选择器形式指定_AminLayout.cshtml文件中定义的按钮模版(按钮在系统管理->按钮管理中配置)。

在这里插入图片描述
  除上述设置之外,还定义了工具栏、操作按钮、排序事件、检索按钮的响应函数,排序和检索的处理逻辑类似,使用table.reload调用SystemManage/RoleController的Index函数获取并显示结果,其余的添加、编辑和删除按钮中,删除按钮的事件处理函数逻辑为调用SystemManage/RoleController的Delete函数删除数据,然后使用table.reload重载页面数据。
在这里插入图片描述

  调用form.on('switch(enabled)'设置表格中角色状态列开关事件的事件处理函数,其内部调用tools.submitConfrim函数提示用户是否在启用和禁用间切换,确定的话则调用SystemManage/RoleController的Enable函数更新标签状态,同时更新页面数据,取消的话则还原角色状态列之前的显示值。
在这里插入图片描述
  新建和编辑角色数据使用的同一页面,位置为SystemManage\Views\Role\Form.cshtml页面,使用layui的表单组件设置样式。如果是新建角色,则直接弹出页面填写信息,而编辑数据的话,主页面会通过url传递key参数,在编辑页面中调用SystemManage/RoleController的GetForm函数获取角色数据初始化编辑页面的对应元素数据。新建或编辑完成后,主页面的js中设置了回调函数,最终调用SystemManage/RoleController的Form函数新增或更新数据。
在这里插入图片描述
  角色管理页面支持按角色设置后台页面(页面管理中定义)及页面按钮(按钮管理中定义)的访问权限,权限设置页面位于为SystemManage\Views\Permission\Index.cshtml页面,使用layui的表单组件设置样式,同时采用ztree组件通过勾选方式显示并设置树形菜单数据。主页面会通过url传递key参数(角色标识),页面内置的js调用SystemManage/PermissionController的GetAuthorization函数获取角色权限数据初始化ztree组件。编辑完成后,主页面的js中设置了回调函数,最终调用SystemManage/PermissionController的Index函数更新数据。
在这里插入图片描述
参考文献:
[1]https://gitee.com/miss_you/Blog
[2]https://layui.dev/docs/2/
[3]https://www.treejs.cn/v3/main.php#_zTreeInfo

相关文章:

  • 宝塔PHP环境安装配置Xdebug
  • Golang实现根据文件后缀删除文件和递归删除文件
  • spring session+redis存储session,实现用户登录功能,并在拦截器里面判断用户session是否过期,过期就跳转到登录页面
  • HarmonyOS interface router scale pageTransition SlideEffect.Left ArkTS ArkUI
  • python -【五】数据容器
  • [双指针] --- 快乐数 盛最多水的容器
  • react记录部署
  • 信息学奥赛初赛天天练-15-阅读程序-深入解析二进制原码、反码、补码,位运算技巧,以及lowbit的神奇应用
  • c++编程(15)——list的模拟实现
  • Spring:IoC容器(基于XML管理bean)
  • J.搬砖【蓝桥杯】/01背包+贪心
  • Redis 常用基本命令
  • 端口扫描利器--nmap
  • 使用 Django Rest Framework 构建强大的 Web API
  • Android Studio | 小白如何运行别人的安卓项目
  • ----------
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • Angularjs之国际化
  • JavaScript设计模式与开发实践系列之策略模式
  • Kibana配置logstash,报表一体化
  • Twitter赢在开放,三年创造奇迹
  • 仿天猫超市收藏抛物线动画工具库
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 使用SAX解析XML
  • 使用Swoole加速Laravel(正式环境中)
  • 首页查询功能的一次实现过程
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 一个完整Java Web项目背后的密码
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • - 转 Ext2.0 form使用实例
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​configparser --- 配置文件解析器​
  • ​比特币大跌的 2 个原因
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #1014 : Trie树
  • (1)STL算法之遍历容器
  • (11)MSP430F5529 定时器B
  • (5)STL算法之复制
  • (二)windows配置JDK环境
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (未解决)macOS matplotlib 中文是方框
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (转)http协议
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET CLR Hosting 简介
  • .Net Core和.Net Standard直观理解
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .net 调用海康SDK以及常见的坑解释
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .net 受管制代码
  • .net 无限分类
  • .NET 指南:抽象化实现的基类
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)