Что вы хотите сделать это в ваш 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");
является ли это веб-приложение ASP.NET? .. если это так, используйте мастер-страницы и установите видимость вкладок или меню оттуда. Я использовал этот подход много раз, когда аутентифицировал роли групп пользователей ontop ActiveDirectory. – MethodMan
Здесь очень мало информации. Что такое «меню» в данном случае? Как создаются ваши существующие «меню»? Вы просто строите их на главной странице? Может быть, есть оба меню на главной странице и просто показать/скрыть их с условием, который проверяет роль зарегистрированного пользователя? – David
Мне жаль, но я не понял, что вы только что сказали ... и да, это веб-приложение asp.net, я собирался сделать это как пользовательский элемент управления и перетащить его на главную страницу. – Mazda