2014-07-02 159 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> 
相关问题