我正在尝试创建一个根据用户角色进行不同排序的菜单。
例如,如果用户是管理员角色,则显示的菜单将是:
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/