Навигация по 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, установите это значение.

Другие вопросы по тегам