这个直接上后台吧。

/// <summary>
		/// 返回当前的角色所拥有的菜单
		/// </summary>
		/// <param name="disposing"></param>
		[HttpGet]
		public ActionResult ShowRoleMenu()
		{
			///是否登录
			if (!Request.IsAuthenticated) {
				return RedirectToAction("Login", "Account");
			}
			///获取当前用户的id
			var userID = User.Identity.GetUserId();
			///先读出当前用户表对应的所有的ROLES表,但只有rolename.
			var rolses = UserManager.GetRoles(userID);
			///先读出当前用户的完整表.
			var alluser = UserManager.FindById(userID);
			///先读出当前所有的ROLES表.
			var allrolses = RoleManager.Roles.ToList();
			///皮配出这个用户ID的角色列表ID出来
			var user_roleid = allrolses.Where(x => rolses.Contains(x.Name)).Select(n =>n.Id).ToList();
			//var rolses = RoleManager.Roles.ToList();
			//这里是所有角色,不是当前用户的角色
			//var roleIds = rolses.Select(m => m.id).ToList();
			var role_menus = db.RoleMenus.Where(m => user_roleid.Contains(m.RoleId)).ToList();//查询出角色关联表的所有数据
			//var role_menus = db.RoleMenus.Where(m =>m.RoleId== rolses.Select(x=>x.id) rolses.Contains(m.RoleId)).ToList();//查询出角色关联表的所有数据
			var menuIds = role_menus.Select(n => n.MenuId).ToArray();
			var menus = db.MenuInfos.OrderBy(x => x.Sort).Where(m => menuIds.Contains(m.Id)).ToList();//查询出菜单数据
			///下面进行表的读成菜单样式
			///定义一个变量result的MenuInfo列表变量
			var result = new List<MenuInfo>();
			///读出所有的一级菜单
			var level0 = menus.Where(m => m.Popedomfatherid == 0).ToList();
			///对所有一级菜单进行一次循环。 foreah (var xx in level0) 这种一样
			level0.ForEach(item =>
			{
				///定义一个children字菜单变量,当他的Popedomfatherid=当前循环的ID,取出当前的所有字菜单
				var children = menus.Where(m => m.Popedomfatherid == item.Id).ToList();
				 
				/////为新定义的result变量增加一个 一级菜单
				result.Add(item);
				///为新定义的result变量增加一个 所有的字菜单
				result.AddRange(children);
			});
			//ViewBag.List = result;

			return View(result);

		}

  

自己写的时候不懂,用了八个步骤。唉

新人就这样,不过功能是有了

 

版权声明:本文为xiaodeng1979原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xiaodeng1979/articles/9637478.html