100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > ASP.NET MVC5+EF6+EasyUI 后台管理系统(20)-权限管理系统-根据权限获取菜单

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

时间:2019-04-18 04:14:53

相关推荐

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博客园博客,原文链接:/ymnets/p/3456677.html,如需转载请自行联系原作者

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。