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

Maz*_*zda 5 c# linq asp.net menu

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

例如,如果用户是Admin角色,则显示的菜单将为:

  • AdminPane

  • RegisterUser

  • 的UserRole

如果用户是基本角色:

  • ViewProducts

  • 下单

这是一个布局示例.

我会感激一些帮助,因为我一直在网上搜索2个小时而没有运气.

谢谢.

小智 4

您想要做的是在您的 web.configsystem.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>
Run Code Online (Sandbox Code Playgroud)

然后,您将定义三个站点地图提供程序,每个提供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");
Run Code Online (Sandbox Code Playgroud)