使用多角色来控制授权,MembershipExtensions中还有部分未能完全处理
大石头 authored at 2018-03-19 18:52:53
1.94 KiB
X
@using NewLife.Model;
@{
    var user = ViewBag.User as IUser ?? User.Identity as IUser;

    var fact = ObjectContainer.Current.Resolve<IMenuFactory>();

    var Menus = fact.Root.Childs;
    if (user != null && user.Role != null)
    {
        Menus = fact.GetMySubMenus(fact.Root.ID, user);
    }

    // 如果顶级只有一层,并且至少有三级目录,则提升一级
    if (Menus.Count == 1 && Menus[0].Childs.All(m => m.Childs.Count > 0)) { Menus = Menus[0].Childs; }

    String[] icos = new String[] { "fa-tachometer", "fa-desktop", "fa-list", "fa-pencil-square-o", "fa-list-alt", "fa-calendar", "fa-picture-o", "fa-tag", "fa-file-o" };
    Int32 _idx = 0;
}
<ul class="nav nav-list">
    @foreach (IMenu menu in Menus.Where(m => m.Visible))
    {
        var childs = fact.GetMySubMenus(menu.ID, user).Where(m => m.Visible);
        if (_idx >= icos.Length) { _idx = 0; }
        <li @Html.Raw(menu == Menus[0] ? "class=\"active open\"" : "")>
            <a href="#" class="dropdown-toggle">
                <i class="menu-icon fa @icos[_idx++]"></i>
                <span class="menu-text">@menu.DisplayName</span>

                <b class="arrow fa fa-angle-down"></b>
            </a>
            @if (childs.Any())
            {
                <b class="arrow"></b>

                <ul @Html.Raw(menu == Menus[0] ? "class=\"submenu nav-show\" style=\"display:block;\"" : "class=\"submenu nav-hide\" style=\"display:none;\"")>
                    @foreach (IMenu menu2 in childs)
                    {
                        @Html.Partial("_Left_Item", menu2);
                    }
                </ul>

                @*<ul class="submenu">
                        @foreach (IMenu menu2 in childs)
                        {
                            @Html.Partial("_Left_Item", menu2);
                        }
                    </ul>*@
            }
        </li>
    }
</ul>
<!-- /.nav-list -->