实现代码
前台
<!--菜单按钮开始-->
@{foreach (var root in ViewData["root"] as List<TestPaperManagerMentSystem.Models.Model.TP_Menu>)
{
<a href="javascript:void(0)" id="root@(root.Id)" style="color: black; font-weight: 700;margin-right:20px" class="easyui-menubutton" data-options="menu:'#menu@(root.Id)',onClick:menuHandler">@root.Name</a>
}
}
<!--菜单按钮结束-->
<!--菜单体开始-->
<div style="display: none">
@{foreach (var root in ViewData["root"] as List<TestPaperManagerMentSystem.Models.Model.TP_Menu>)
{
<div id="menu@(root.Id)" data-options="onClick:menuHandler" style="width: 150px;">
@{foreach (var child in ViewData["child"] as List<TestPaperManagerMentSystem.Models.Model.TP_Menu>)
{
if (child.Pid.Equals(root.Id))
{
<div data-options="name:'@child.Path'">@child.Name</div>
}
}
}
</div>
}
}
</div>
<!--菜单体结束-->
</td>
</tr>
<!--菜单结束-->
后台
public ActionResult Index()
{
TP_User user = (TP_User)Session["user"];
//Session["user"] = DAL_TP_User.getUserById(userId);
//此用户所有的菜单
List<TP_Menu> list = DAL_TP_Menu.getList("select t1.* from tp_menu as t1 inner join tp_role_menu as t2 on t1.ID=t2.MENUID inner join tp_role_user as t3 on t2.ROLEID=t3.ROLEID inner join tp_userinfo as t4 on t3.USERID=t4.ID where t4.ID='" + user.Id + "' order by t1.STEP");
//去重。因为一个人可能有多个角色,所以菜单项是重复的,
list = list.Distinct(new CompareMenu<TP_Menu>(
delegate(TP_Menu t1, TP_Menu t2)
{
if (t1 != null && t2 != null)
{
return t1.Id == t2.Id;
}
return false;
}
)).ToList<TP_Menu>();
//菜单按钮,根
var rootList = list.FindAll(mList =>
{
if (mList.Step.Length == 6) return true;
else return false;
});
//菜单项
var childList = list.FindAll(mMenu =>
{
if (mMenu.Step.Length > 6) return true;
else return false;
});
ViewData["root"] = rootList;
ViewData["child"] = childList;
return View();
}