2016-11-15 70 views
0

我有如下這種結構的菜單:基於角色的菜單

<div id="sidebar-menu"> 
      <ul> 
       <li class="active"> 
        <a href="index.html" class="design active"><i class="icon-employee"></i><span> Employees </span></a> 
       </li> 

       <li> 
        <a href="Holiday.html" class="design"><i class="icon-holiday"></i><span> Holidays <span class="badge">6</span></span></a> 
       </li> 

       <li class="has_sub"> 
        <a href="javascript:void(0);" class="design"><i class="icon-time"></i> <span> Time & Attendance </span> <span class="pull-right"><i class="mdi mdi-plus"></i></span></a> 
        <ul class="list-unstyled"> 
         <li><a href="incident.html">Incidents</a></li> 
         <li><a href="hour.html">Hours</a></li> 
         <li><a href="pass.html">Passes</a></li> 
         <li class"active"><a class"active" href="disability.html">Disabilities</a></li> 
        </ul> 
       </li> 
    </ul> 
    </div> 

有一個關於如何創建它,但它只是一個一級菜單的好文章,這裏是一個二級菜單。 http://techbrij.com/role-based-menu-asp-net-mvc

我想根據用戶角色或驗證動態顯示它。

任何線索或示例如何做到這一點?

回答

3

根據用戶角色在任何視圖中動態顯示內容。你可以做這樣的事情:

@if (User.IsInRole("roleName")) 
{ 
    //Here you can write anything you want to show. 
    <li><a href="incident.html">Incidents</a></li> 
    <li><a href="hour.html">Hours</a></li> 
    <li><a href="pass.html">Passes</a></li> 
} else { 
    <li><a href="signup.html">Sign Up</a></li> 
    <li><a href="login.html">Login</a></li> 
    <li><a href="aboutus.html">About Us</a></li> 
} 

如果你只是想檢查,如果用戶通過驗證,你可以做這樣的:

@if (@User.Identity.IsAuthenticated) 
{ 
    //Here you can write anything you want to show. 
    <li><a href="incident.html">Incidents</a></li> 
    <li><a href="hour.html">Hours</a></li> 
    <li><a href="pass.html">Passes</a></li> 
} else { 
    <li><a href="signup.html">Sign Up</a></li> 
    <li><a href="login.html">Login</a></li> 
    <li><a href="aboutus.html">About Us</a></li> 
} 

如果菜單是完全不同的,將是很好根據用戶角色或用戶是否通過身份驗證,執行2個部分視圖並從_Layout調用它們。這裏是一個例子:

@if (User.IsInRole("roleName")) 
{ 
    //Here you can write anything you want to show. 
    @Html.Partial("_RoleXXMenu") 
} else { 
    @Html.Partial("_RoleYYMenu") 
}