我是否可以根据角色隐藏asp:Menu控件中的某些菜单项?

<asp:Menu ID="mTopMenu" runat="server" Orientation="Horizontal" />
    <Items>
        <asp:MenuItem Text="File">
            <asp:MenuItem Text="New Project" />
            <asp:MenuItem Text="Release Template" NavigateUrl="~/Release/ReleaseTemplate.aspx" />
            <asp:MenuItem Text="Release Schedule" NavigateUrl="~/Release/ReleaseSchedule.aspx" />
            <asp:MenuItem Text="Roles" NavigateUrl="~/Admin/AdminRoles.aspx" />
        </asp:MenuItem>
    </Items>
</asp:Menu>

如何使这些项目中的一项仅对管理员角色的用户可见?

推荐答案

你可以打bind the menu items to a site map and use the roles attribute分.你需要在你的网站上启用安全微调.配置以完成此操作.这是最简单的方法.

网站导航概述:

安全信息:

站点 map 绑定信息:

这里有很好的教程/概述: http://weblogs.asp.net/jgalloway/archive/2008/01/26/asp-net-menu-and-sitemap-security-trimming-plus-a-trick-for-when-your-menu-and-security-don-t-match-up.aspx

另一个可行但不太理想的 Select 是使用loginview控件,它可以根据角色显示控件.这可能是最快(但灵活性/性能最低)的 Select .你可以在这里找到一个指南:http://weblogs.asp.net/sukumarraju/archive/2010/07/28/role-based-authorization-using-loginview-control.aspx

Asp.net相关问答推荐

Razor中的共享本地化资源文件

如何从 Azure 上托管的应用服务获取登录用户名?

如何从 JavaScript 调用 C# 函数?

系统日期时间?与 System.DateTime

如何在 GridView 单元格中的(即
)中呈现解码的 HTML

如何将配置转换应用于外部配置文件

如何从 RouteData 获取路由名称?

HttpWebRequest 未通过凭据

System.Web.HttpContext 无法识别

使用域用户的 SQL 连接字符串?

免费的 ASP.Net 和/或 CSS 主题

与将 Web 应用程序保存在一个默认应用程序池中相比,拥有专用应用程序池的优缺点

将数据表导出到 Excel 文件

带有 ASP.NET WebMethod 的 Jquery AJAX 返回整个页面

当.NET抛出WebException((400)错误请求)时如何处理WebResponse?

global.asax 中的 Application_Error 未捕获 WebAPI 中的错误

在c#中显示带有换行符的标签文本

在.net的内存数据库中

哪个事件先调用?母版页 Page_Load 或内容页 Page_Load

在 Visual Studio 2012 中调试 .NET Framework 源代码?