Опубликован: 14.11.2006 | Доступ: свободный | Студентов: 5898 / 532 | Оценка: 4.18 / 3.74 | Длительность: 16:37:00
ISBN: 978-5-9556-0085-7
Лекция 11:

Навигация по сайту

< Лекция 10 || Лекция 11: 12345 || Лекция 12 >
Аннотация: Описание элементов управления группы Navigation. Навигация по сайту. Отображение иерархической информации.

До сих пор мы создавали отдельные страницы. Web-приложения, которые обычно создаются для работы в Интернете, состоят из большого количества взаимосвязанных страниц. Переход с одной страницы на другую происходит по гиперссылкам. На многих сайтах создаются различные средства для путешествий по страницам. Панели навигации располагаются в верхней части страницы в виде полосы, справа или слева в виде древовидной структуры.

Курсы   Учебные программы   Учебники   Новости   Форум   Помощь

Для того чтобы упростить разработку такой функциональности, в ASP .NET 2.0 предоставлена возможность в виде готовых элементов управления навигации.

Структура навигации должна быть описана в карте сайта. Она находится в файле .sitemap формата XML, который можно создать в диалоге New File, выбрав пункт Site Map. Имя этого файла по умолчанию — web.sitemap. Карта сайта служит источником информации для всех элементов управления группы Navigation. С ней можно работать программно с помощью класса SiteMap или через элемент управления — источник данных SiteMapDataSource.

Узлы siteMapNode могут вкладываться друг в друга, создавая иерархию. Логика вложенности узлов никак не связана с физическим расположением файлов. Каждый атрибут url в файле .sitemap должен быть уникальным.

Схема формата .sitemap:

<?xml version="1.0" encoding="utf-8" ?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
   elementFormDefault="qualified">
  <xs:element name="siteMap">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="siteMapNode" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="siteMapNode">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="siteMapNode" minOccurs="0" 
        maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:attribute name="url" type="xs:string" />
      <xs:attribute name="title" type="xs:string" />
      <xs:attribute name="description" type="xs:string" />
      <xs:attribute name="keywords" type="xs:string" />
      <xs:attribute name="roles" type="xs:string" />
      <xs:attribute name="siteMapFile" type="xs:string" />
      <xs:attribute name="Provider" type="xs:string" />
    </xs:complexType>
  </xs:element>
</xs:schema>

Чтобы сделать карту сайта доступной для элементов управления, используется провайдер типа XmlSiteMapProvider. Можно разработать собственный провайдер.

Редактирование карты сайта в Visual Studio 2005 облегчается с помощью технологии IntelliSense.

Атрибут title узла карты сайта создает текстовое описание страницы. Он используется как текст гиперссылки, создаваемой в TreeView или Menu. Атрибут description задает текст подсказки (Tooltip), связанной с этой гиперссылкой. Атрибут url описывает путь к странице внутри web-сайта. При этом для страниц в корневой директории достаточно указать их название. Если страница находится в поддиректории, путь указывается с помощью прямого слэша:

<?xml version="1.0" encoding="utf-8" ?>
<siteMap>
  <siteMapNode title="Home" url="Default.aspx">
    <siteMapNode title="Resume" url="Resume.aspx" />
    <siteMapNode title="Links" url="Links.aspx" />
    <siteMapNode title="Albums" url="Albums.aspx" >
      <siteMapNode title="Photos" url="Photos.aspx" >
        <siteMapNode title="Details" url="Details.aspx" />
      </siteMapNode>
    </siteMapNode>
    <siteMapNode title="Register" url="Register.aspx" />
    <siteMapNode title="Manage" url="Admin/Albums.aspx" >
      <siteMapNode title="Photos" url="Admin/Photos.aspx" >
        <siteMapNode title="Details" url="Admin/Details.aspx" />
      </siteMapNode>
    </siteMapNode>
  </siteMapNode>
</siteMap>

Элементы управления для навигации по сайту — TreeView, Menu, SiteMapPath.

Некоторые элементы навигации могут работать с картой напрямую, например SiteMapPath, но Menu и TreeView могут показывать карту сайта, только получая данные из SiteMapDataSource.

< Лекция 10 || Лекция 11: 12345 || Лекция 12 >
Алексей Савельев
Алексей Савельев

https://technet.microsoft.com/en-us/library/ms143221(v=sql.105).aspx

Денис Прокофьев
Денис Прокофьев

Везде написано, что это самый независимый и простой в использовании навигационный элемент управления, что он работает сразу с web.sitemap и не требует определения SiteMapDataSource.

Моя карта сайта состоит из двух страниц, вложенных друг в друга. asp:Menu, asp:TreeView отбображаются как ожидалось, а вот asp:SiteMapPath - нет. Он не виден нигде. Однако на его месте формируется разметка: <span id="SiteMapPath1"><a href="#SiteMapPath1_SkipLink" style="position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden;">Проход по ссылкам навигации</a><a id="SiteMapPath1_SkipLink"></a></span> - т.е. элемент отрабатывает.

В словах xHTML это выглядит так: <asp:SiteMapPath ID="SiteMapPath1" runat="server" />. Причем не важно - внутри тега form или снаружи - всегда одинаково.

Т.к. другие нав. ЭУ работают через простой источник данных без ошибок, делаю вывод - карта составлена правильно. ИД: <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />

Карта: <?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode url="~/L11_1_simplePage.aspx" title="Страница 1"  description="Простая страница 1." >
    <siteMapNode url="~/L11_1SimplePage2.aspx" title="Страница 2"  description="Простая страница 2" />
  </siteMapNode>
</siteMap>

Почему так происходит? Вроде делаю все по примерам. VS Community 2015. NetFramework в проекте: v4.0.30319