这里我想检查userRole是否为Administrator,然后显示所有菜单项&如果userRole不是管理员,那么显示公共菜单项。但是这里没有任何错误,但它显示同一个Admin和&普通用户
<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>
答案 0 :(得分: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>