Навигация по SiteMathPath
Мое приложение имеет несколько разных пользователей, в настоящее время для них настроены разные мастер-страницы. Идея для какого-то типа хлебных крошек в системе, то есть дома> детали>...
Каков наилучший подход для этого? Я думаю, что мне нужно будет определить отдельные пути, которые каждый пользователь может иметь (все страницы, которые он может просматривать) в Web.sitemap (будет иметь несколько SiteMapPaths), а затем добавить элемент управления картой сайта на главную страницу и связать их с соответствующим SiteMapPath, это звучит как правильный подход к этому?
У меня возникла проблема с настройкой SiteMapPath на главной странице. Я использовал следующий учебник http://geekswithblogs.net/azamsharp/archive/2006/08/16/88197.aspx чтобы попытаться использовать элемент управления, но элемент управления SiteMapPath не отображается на главной странице при входе в систему. Знаете ли вы, в чем может быть проблема?
Web.sitemap:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="home.aspx" title="" description="">
<siteMapNode url="contacts.aspx" title="" description="">
</siteMapNode>
</siteMap>
На главной странице:
<asp:SiteMapPath ID="SiteMapPath1" runat="server">
<RootNodeTemplate>
<asp:HyperLink ID="HyperLink1" runat="server"
Text='<%# Eval("title") %>' NavigateUrl='<%# Eval("url") %>' />
</RootNodeTemplate>
<NodeTemplate>
<asp:HyperLink ID="HyperLink2" runat="server"
Text='<%# Eval("title") %>' NavigateUrl='<%# Eval("url") %>' />
</NodeTemplate>
</asp:SiteMapPath>
Спасибо
1 ответ
Если вы используете FormsAuthentication для управления авторизацией пользователей для страниц, по которым они могут перемещаться, то я бы предложил также включить роли. Затем используйте securityTrimmingEnabled="ture" в sitemapprovider. Таким образом, вам не понадобятся отдельные файлы Sitemap для каждого пользователя.
Вот основы того, как это работает:
И вы можете поделиться с нами кодом, чтобы мы знали, почему то, что вы пробовали, не работает.
Отредактировано:1
Для этого вам не нужен встроенный поставщик ролей, но вам нужно добавить роли в UserPrincipal. Как это сделать, показано здесь. Но вам нужно будет написать код, который возвращает роли в виде строки для каждого истинного значения, то есть "admin", если admin имеет значение true для пользователя в базе данных. Затем добавьте эти роли пользователю Принципал, как показано в ссылке, и он должен работать в сочетании с первой ссылкой.
Редактировать:2 Вам не нужен этот сложный код для работы SiteMap. Вы просто перетащите его на свою страницу, и он будет работать на основе вашего файла.sitemap. Также у вас есть title="" для sitemapnode, установите это значение.