ASP.NET MVC5+EF6+EasyUI 后台管理系统(20)-权限管理系统-根据权限获取菜单
不知不觉到20讲,真是漫长的日子,可惜最近工作挺忙,要不可以有更多的时间来更新,多谢大家的一路支持.如果你觉得好,记得帮我点击推荐^-^
我们在之前已经插入一些真实数据,其中包含了一个用户和样例程序SysSample的权限,并实现了用户的登录。
但有的朋友对表还是有疑惑,通过下面的linq查询,应该你就没有这个困惑了。
不出意外,我们的菜单栏将只显示样例程序这个模块。
这就简单了,我们已经有了获取菜单栏的类了,只要加入用户参与判断即可,所以我们将修改
IBLL BLL IDAL DAL层的Home类(红色为原来的,绿色为最新修改的)
List<SysModule> GetMenuByPersonId(string moduleId);
List<SysModule> GetMenuByPersonId(string personId, string moduleId);
---------------------------
public List<SysModule> GetMenuByPersonId(string moduleId)
{
return HomeRepository.GetMenuByPersonId(moduleId);
}
public List<SysModule> GetMenuByPersonId(string personId, string moduleId)
{
return HomeRepository.GetMenuByPersonId(personId,moduleId);
}
---------------------------
List<SysModule> GetMenuByPersonId(string moduleId);
List<SysModule> GetMenuByPersonId(string personId, string moduleId);
---------------------------
最后看到DAL层,这里是获取菜单逻辑代码
public List<SysModule> GetMenuByPersonId(string moduleId)
{
using (DBContainer db = new DBContainer())
{
var menus =
(
from m in db.SysModule
where m.ParentId == moduleId
where m.Id != "0"
select m
).Distinct().OrderBy(a=>a.Sort).ToList();
return menus;
}
}
public List<SysModule> GetMenuByPersonId(string personId, string moduleId)
{
using (DBContainer db = new DBContainer())
{
var menus =
(
from m in db.SysModule
join rl in db.SysRight
on m.Id equals rl.ModuleId
join r in
(from r in db.SysRole
from u in r.SysUser
where u.Id == personId
select r)
on rl.RoleId equals r.Id
where rl.Rightflag == true
where m.ParentId == moduleId
where m.Id != "0"
select m
).Distinct().OrderBy(a => a.Sort).ToList();
return menus;
}
}
最后更该controller的home方法GetTree
/// <summary>/// 获取导航菜单/// </summary>/// <param name="id">所属</param>/// <returns>树</returns>public JsonResult GetTree(string id){if (Session["Account"] != null){AccountModel account = (AccountModel)Session["Account"];List<SysModule> menus = homeBLL.GetMenuByPersonId(account.Id, id);var jsonData = (from m in menusselect new{id = m.Id,text = m.Name,value = m.Url,showcheck = false,complete = false,isexpand = false,checkstate = 0,hasChildren = m.IsLast ? false : true,Icon = m.Iconic}).ToArray();return Json(jsonData, JsonRequestBehavior.AllowGet);}else{return Json("0", JsonRequestBehavior.AllowGet);}}
预览下效果
果真是我们要的效果
现在要做的就是把之前那些日志管理,异常管理等等加入到数据表中看看效果了。
通过这里你可以熟悉下数据流。
但我总觉得上面的linq语句是可以继续优化的,求linq大神!!!!
本文转自ymnets博客园博客,原文链接:http://www.cnblogs.com/ymnets/p/3456677.html,如需转载请自行联系原作者
ASP.NET MVC5+EF6+EasyUI 后台管理系统(20)-权限管理系统-根据权限获取菜单相关推荐
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(持续更新中...)
开发工具:VS2015(2012以上)+SQL2008R2以上数据库 您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB 升级后界面效果如下: 日程管理 http:// ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统
ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(持续更新中...) 开发工具:VS2015(2012以上)+SQL2008R2以上数据库 您可以有偿获取一份最新源码联 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统-WebApi的用法与调试
ASP.NET MVC5+EF6+EasyUI 后台管理系统-WebApi的用法与调试 1:ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-WebApi与Unity注入 使用Uni ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(51)-系统升级
系统很久没有更新内容了,期待已久的更新在今天发布了,最近花了2个月的时间每天一点点,从原有系统 MVC4+EF5+UNITY2.X+Quartz 2.0+easyui 1.3.4无缝接入 MVC5+E ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(67)-MVC与ECharts
系列目录 ECharts 特性介绍 ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Fire ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(2)-easyui构建前端页面框架[附源码]
系列目录 前言 为了符合后面更新后的重构系统,本文于2016-10-31日修正一些截图,文字 我们有了一系列的解决方案,我们将动手搭建新系统吧. 后台系统没有多大的UI视觉,这次我们采用的是标准的左右 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(46)-工作流设计-设计分支
系列目录 步骤设置完毕之后,就要设置好流转了,比如财务申请大于50000元(请假天数>5天)要总经理审批,否则财务审批之后就结束了. 设置分支没有任何关注点,我们把关注点都放在了用户的起草表单. ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(39)-在线人数统计探讨
系列目录 基于web的网站在线统计一直处于不是很精准的状态!基本上没有一种方法可以确实的统计在线用户! Discuz!NT 在线用户功能算是做得比较好的!参考资料 他的原理大致是根据用户的操作间隔来确 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-WebApi与Unity注入
系列目录 前言: 有时候我们系统需要开放数据给手机App端或其他移动设备,不得不说Asp.net WebApi是目前首选 本节记录Asp.net MVC WebApi怎么利用Unity注入.系列开头已 ...
最新文章
- AI理论知识整理(1)-数列(1)
- iOS下载大型文件原理解析三
- Sentinel(十三)之动态规则扩展
- https开头的网址是什么意思_我想打这个面试官,他给我挖坑,问我:URI中的 “//” 有什么用?...
- [转载]XSS 攻擊常用腳本
- OpenCart框架运行流程介绍opencart资料链接
- 微信小程序后端系统CMS开发笔记--04
- 给敏捷软件开发的26条建议
- linux查看pbs报错日志,PBS 作业管理系统
- AI变身超级赌神,德扑六人局击败世界冠军!
- 求1加到n的发散思维方法
- python中@property的作用
- 17python实操案例五
- JSP前三章测试改错
- ipad分屏功能怎么开启_iPad 重大更新!14个新功能,每个都很实用
- Java即时编译器原理解析及实践
- LeetCode-2206. 将数组划分成相等数对_Python
- ssm+redis整合(通过cache方式)
- java 字符串转时间,时间转字符串
- [转载]蛋白质相互作用数据库