2014-07-02 154 views
0

在這裏我想檢查userRole是否是管理員,然後顯示所有菜單項&如果userRole不是管理員然後顯示公共菜單項。但是這裏沒有任何錯誤,顯示samething管理員&普通用戶限制物品到管理員角色和用戶角色會員供應商

<div class="nav-collapse collapse"> 
<ul class="nav"> 
    <%if (Roles.IsUserInRole(System.Web.HttpContext.Current.User.Identity.Name, "Administrator")) 
    {%> 
<li class="active"><a href="Default.aspx">Home</a></li> 

<li class="dropdown"> 
    <a href="#" data-toggle="dropdown" class="dropdown-toggle">Company <b class="caret"></b></a> 
    <ul aria-labelledby="dLabel" role="menu" class="dropdown-menu"> 
     <li> 
      <a href="CompanyProfile.aspx">Profile</a> 
     </li> 
     <li> 
      <a href="FileData.aspx">FileData</a> 
     </li> 
    </ul> 
</li> 

<%} 
else 
    { %> 
<li class="active"><a href="Default.aspx">Home</a></li> 

<li class="dropdown"> 
    <a href="#" data-toggle="dropdown" class="dropdown-toggle">Company <b class="caret"></b></a> 
    <ul aria-labelledby="dLabel" role="menu" class="dropdown-menu"> 
     <li> 
      <a href="CompanyProfile.aspx">Profile</a> 
     </li> 
    </ul> 
</li> 

<% }  
%> 
</ul> 
</div> 
</ul> 
</div> 
+2

而當User.Identity.Name是一個普通用戶時,什麼值包含?你確定普通用戶與管理員角色不同嗎?如果菜單隻適用於管理員用戶,我將只檢查角色<%if(Roles.IsUserInRole(「Administrator」)) – Moy

+0

@MoisesCardenas Fixed – TechGuy

回答

1

對於那種情況下,你要使用LoginView控制,而不是HTML標記內硬編碼的C#類,這是真的很脆弱,難以維持。

此外,如果您的應用程序中的Membership配置正確,LoginView控件將立即正確運行。

<asp:LoginView id="LoginView1" runat="server"> 
    <AnonymousTemplate> 
     Please log in for personalized information. 
    </AnonymousTemplate> 
    <LoggedInTemplate> 
    Thanks for logging in 
     <asp:LoginName id="LoginName1" runat="Server"></asp:LoginName>. 
    </LoggedInTemplate> 
    <RoleGroups> 
     <asp:RoleGroup Roles="Administrator"> 
     <ContentTemplate> 
      <div class="nav-collapse collapse"> 
       <ul class="nav"> 
        <li class="active"><a href="Default.aspx">Home</a></li> 
        .... 
       </ul> 
      </div> 
     </ContentTemplate> 
     </asp:RoleGroup> 
    </RoleGroups> 
</asp:LoginView> 
相關問題