前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ASP.NET MVC5+EF6+EasyUI 后台管理系统(20)-权限管理系统-根据权限获取菜单

ASP.NET MVC5+EF6+EasyUI 后台管理系统(20)-权限管理系统-根据权限获取菜单

作者头像
用户1149182
发布2018-01-16 14:31:50
2.2K0
发布2018-01-16 14:31:50
举报

不知不觉到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

代码语言:javascript
复制
  /// <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 menus
                        select 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大神!!!!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013-12-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档