Практическое руководство. Настройка нескольких карт веб-узлов и поставщики карт веб-узлов
Обновлен: Ноябрь 2007
По умолчанию для переходов по узлу ASP.NET используется XML-файл с названием Web.sitemap, описывающий иерархию веб-узла. Однако можно использовать несколько файлов карт веб-узлов или поставщика карты веб-узла для описания структуры переходов по всему веб-узлу.
Например, можно использовать основную карту веб-узла, ссылающуюся на карту дочернего веб-узла. Карта основного веб-узла может выглядеть следующим образом.
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="https://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode title="Home Page" description="">
<siteMapNode title="First Level 1" description="" />
<siteMapNode title="First Level 2" description="">
<siteMapNode title="Second Level 1" description=""/>
<siteMapNode title="Second Level 2" description=""/>
</siteMapNode>
<siteMapNode siteMapFile="child.sitemap" />
</siteMapNode>
</siteMap>
Карта дочернего веб-узла может выглядеть следующим образом.
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="https://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode title="Child First Level 1" description="">
<siteMapNode title="Child Second Level 1" description="" />
<siteMapNode title="Child Second Level 2" description="" />
<siteMapNode title="" description="" />
</siteMapNode>
</siteMap>
В результате взаимодействия этих двух карт веб-узлов отображается следующее меню.
Home Page
First Level 1
First Level 2
Second Level 1
Second Level 2
Child First Level 1
Child Second Level 1
Child Second Level 2
Для настройки нескольких карт для одного узла начните с карты веб-узла в корне приложения. Настройте поставщика корневого элемента как поставщика карты веб-узла по умолчанию в файле Web.config. Затем создайте ссылку на карты или поставщиков дочерних узлов, указав их в объекте SiteMapNode.
Создание ссылки на файл карты дочернего узла из карты родительского веб-узла
Из карты родительского веб-узла создайте SiteMapNode в том месте структуры переходов, где следует отображаться карт дочернего веб-узла.
Например, при использовании класса XmlSiteMapProvider по умолчанию добавьте следующий узел SiteMapNode в соответствующее местоположение в файле Web.sitemap.
<siteMapNode siteMapFile="MySiteMap.sitemap" />
Атрибут siteMapFile может принимать одну из следующих форм.
Относящаяся к приложения ссылка (например, ~/MySiteMap.sitemap).
Виртуальный путь (например, /Customers/MySiteMap.sitemap).
Ссылка на путь относительно места текущего файла карты веб-узла (например, Guests/MySiteMap.sitemap).
Примечание. Не вводите атрибут Url, title или description для элемента siteMapNode при указании атрибута siteMapFile.
Дополнительные сведения о создании файла карты веб-узла см. в разделе Карты узла ASP.NET.
Создание ссылки на пользовательского поставщика карты веб-узла из карты родительского веб-узла
Из карты родительского веб-узла создайте SiteMapNode в том месте структуры переходов, где следует отображаться карт дочернего веб-узла.
Например, при использовании класса XmlSiteMapProvider по умолчанию откройте файл Web.sitemap и добавьте следующий узел SiteMapNode в соответствующее место иерархии:
<siteMapNode provider="SimpleTextSiteMapProvider" />
Примечание. Атрибут provider соответствует атрибуту поставщика name в файле Web.config.
Добавьте пользовательского поставщика карты веб-узла к файлу Web.config, используя элемент add.
Следующий код позволяет добавить пользовательского поставщика с именем SimpleTextSiteMapProvider, но сохраняет XmlSiteMapProvider в качестве поставщика карты веб-узла по умолчанию.
<configuration> <!-- other configuration sections --> <system.web> <!-- other configuration sections --> <siteMap defaultProvider="XmlSiteMapProvider"> <providers> <add name="SimpleTextSiteMapProvider" type="Samples.AspNet.SimpleTextSiteMapProvider,Samples.AspNet" siteMapFile = "siteMap.txt" /> </providers> </siteMap> </system.web> </configuration>
Дополнительные сведения о создании настраиваемого поставщика карты веб-узла см. в разделе Реализация поставщиков карт веб-узлов ASP.NET.
Настройка нескольких карт веб-узла в файле Web.config
Объединение карт веб-узла вместе, как в предыдущем примере, позволяет создать единую структуры карты веб-узла из множества элементов. Можно также добавлять ссылки на разные карты веб-узла в файле Web.config, в результате чего они отображаются как разные поставщики. Это полезно, когда для разных областей веб-узла необходимы разные структуры переходов.
Настройка нескольких карт веб-узла в файле Web.config
В файле Web.config найдите раздел siteMap и создайте элемент add для каждой карты веб-узла.
В следующем примере демонстрируется добавление двух карт веб-узла.
<configuration> <!-- other configuration sections --> <system.web> <!-- other configuration sections --> <siteMap defaultProvider="XmlSiteMapProvider"> <providers> <add name="Company1SiteMap" type="System.Web.XmlSiteMapProvider" siteMapFile="~/Company1/Company1.sitemap" /> <add name="Company2SiteMap" type="System.Web.XmlSiteMapProvider" siteMapFile="~/Company2/Company2.sitemap" /> </providers> </siteMap> </system.web> </configuration>
При использовании этой конфигурации можно использовать файлы ~/Company1/Company1.sitemap и ~/Company2/Company2.sitemap с элементами навигации API и элементами управления навигации, такими как SiteMapPath, TreeView, и Menu. Для этого присвойте соответствующему свойству SiteMapProvider значение Company1SiteMap или Company2SiteMap.
Дополнительные сведения о добавлении элементов управления навигации к веб-странице см. в разделе Пошаговое руководство. Добавление простой структуры переходов веб-узла.
См. также
Задачи
Пошаговое руководство. Добавление простой структуры переходов веб-узла
Основные понятия
Поставщики в структуре переходов веб-узла ASP.NET
Фильтрация карты веб-узла ASP.NET по ролям безопасности
Реализация поставщиков карт веб-узлов ASP.NET
Безопасность системы навигации веб-узла ASP.NET