Что вы хотите сделать, так это в вашем файле 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>
Затем вы определите трех провайдеров карты сайтакаждый указывает на свои соответствующие 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");