c# - 根据用户角色在运行时创建菜单

标签 c# asp.net linq menu

我正在尝试创建一个根据用户角色进行不同排序的菜单。

例如,如果用户是管理员角色,则显示的菜单将是:

  • AdminPane

  • RegisterUser

  • UserRoles

如果用户是基本角色:

  • ViewProducts

  • makeOrder

这是一个布局示例。

非常感谢您的帮助,因为我已经在网上搜索了 2 个小时,但没有成功。

谢谢。

最佳答案

你想要做的是在你的 web.config 中有一个部分在你的 system.web 部分,像这样:

    <siteMap>
        <providers>
            <add name="anonymous" type="System.Web.XmlSiteMapProvider" siteMapFile="~/YourAnonymouse.sitemap"/>
            <add name="user" type="System.Web.XmlSiteMapProvider" siteMapFile="~/YourNormalUser.sitemap"/>
            <add name="admin" type="System.Web.XmlSiteMapProvider" siteMapFile="~/YourAdmin.sitemap"/>
        </providers>
    </siteMap>

然后,您将定义三个站点地图提供程序,每个站点地图提供程序都指向各自的 站点地图 文件,以获取您为每种用户类型寻找的必要菜单。

然后您将拥有一个您的菜单服务器控件将使用的 SiteMapDataSource。这很可能存在于您的母版页上。在您的母版页的 Page_Load() 上,您将有逻辑以动态和编程方式设置您的 SiteMapDataSource 控件的站点地图数据源:

    if (HttpContext.Current.User.Identity.IsAuthenticated)
    {
        if (HttpContext.Current.User.IsInRole("Admin"))
            SiteMapDataSource1.Provider = SiteMap.Providers("admin");
        else
            SiteMapDataSource1.Provider = SiteMap.Providers("user");
    }
    else
        SiteMapDataSource1.Provider = SiteMap.Providers("anonymous");

关于c# - 根据用户角色在运行时创建菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8646500/

相关文章:

asp.net - WebAPI 错误 404.0 - 未找到

c# - LINQ - 如果我有很多更改,我应该以某种方式定期 SubmitChanges() 吗?

c# - 使用 LINQ 从 XML 文件中选择元素

c# - 究竟应该如何使用 IAppBuilder.CreatePerOwinContext<T>?

c# - C# Windows 窗体应用程序中的全局变量方法? (公共(public)静态类 GlobalData 是最好的)

c# - 实现 asp.net mvc 聊天全双工

c# - 如何使用 SQL 数据库创建像 Google 放置文本框一样的自动完成文本框

c# - 如何捕获带缩进的字符串组?

c# - .net 的控制反转

c# - IEnumerable - 返回元素两侧范围内的项目