Опубликован: 13.07.2010 | Уровень: специалист | Доступ: платный
Самостоятельная работа 33:

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

Аннотация: Навигация с использованием карты сайта. Определение карты сайта. Декларативная привязка к карте сайта. Использование мастер-страниц для размещения ссылок. Программное управление картой сайта. Навигация с использованием фреймов.

Упражнение 1. Навигация с использованием карты сайта

Файлы к лабораторной работе Вы можете скачать здесь.

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

  1. Файл Web.sitemap с описанием структуры навигации на языке XML (по аналогии с базами данных - сами данные)
  2. Элементы управления SiteMapDataSource и XmlSiteMapProvider для преобразования описания структуры навигации в объектную модель (по аналогии с базами данных - поставщик и источник данных)
  3. Элементы управления TreeView, Menu и SiteMapPath, непосредственно взаимодействующие с пользователем при выполнении навигации (по аналогии с базами данных - элементы отображения и редактирования данных)

Рассмотрим последовательно все необходимые действия для создания полноценного средства навигации по сайту с применением карты сайта.

Создание заготовки проекта

  • Командой меню File/New/Web Site создайте новый пустой проект с именем SiteMap

  • Создайте файл Web.config с настройкой отладки debug. Для этого
    • запустите WAT (Web Site Administration Tool) командой меню Website/ASP.NET Configuration
    • в запущенном WAT выберите вкладку Application или ссылку Application Configuration
    • выберите ссылку Configure debugging and tracing и установите флажок Enable debugging
    • закройте окно WAT
  • В панели Solution Explorer щелкните на пиктограмме Refresh (в верхней части панели), чтобы обновить дерево представления файлов проекта, и убедитесь в появлении файла конфигурации сайта Web.config

Определение карты сайта

Описание структуры навигации следует начинать с создания карты сайта, которая должна находиться в единственном для приложения XML -файле со стандартным именем Web.sitemap, расположенном в корне Web-дерева. Чтобы создать заготовку этого сайта, выполните следующее

  • В панели Solution Explorer выделите корень Web-дерева сайта и через контекстное меню вызовите мастер Add New Item. Установите шаблон в значение Site Map и щелкните на кнопке Add

Оболочка создаст заготовку карты сайта с парным XML-дескриптором <siteMap> </siteMap> и вложенными дескрипторами узлов <siteMapNode>. Дескриптор <siteMap> поддерживается одноименным классом System.Web.SiteMap, который обеспечивает доступ к иерархическому представлению сайта для выполнения навигации. Заготовка файла Web.sitemap, созданная мастером, будет выглядеть так

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
    <siteMapNode url="" title=""  description="">
        <siteMapNode url="" title=""  description="" />
        <siteMapNode url="" title=""  description="" />
    </siteMapNode>
</siteMap>

Здесь представлен один корневой узел <siteMapNode></siteMapNode> и два конечных вложенных узла.

После создания заготовки файла Web.sitemap ее нужно правильно скорректировать, чтобы она соответствовала структуре сайта. При этом нужно соблюсти два обязательных условия:

  1. Сайт должен начинаться с одного корневого узла
  2. Все узлы карты сайта должны иметь уникальные URL

От этого зависит правильная работа класса-поставщика XmlSiteMapProvider, который непосредственно считывает и расшифровывает информацию из файла Web.sitemap. Для считывания информации из файла другого формата потребуется другой нестандартный поставщик (но зачем нам такие заморочки).

Корневой узел и все последующие вложенные в него родительские (раскрывающиеся) узлы иерархического дерева карты сайта должны быть представлены парными дескрипторами <siteMapNode> ...</siteMapNode>. Листья дерева карты сайта можно представить самозакрывающимся (одиночным) дескриптором <siteMapNode>.

Определим карту сайта так, чтобы организовать иерархию страниц сайта некоторой компании по категориям


  • Скорректируйте заготовку файла Web.sitemap, созданного нами ранее, следующим образом
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
    <siteMapNode url="~/Default.aspx" title="Домой"  
          description="Корневой узел (домашняя страница)">
    <siteMapNode url="~/Products.aspx" title="Товары"  
          description="Что мы продаем">
      <siteMapNode url="~/Hardware.aspx" title="Аппаратура"  
          description="Компьютеры и комплектующие" />
      <siteMapNode url="~/Software.aspx" title="Программы"  
          description="Программное обеспечение компьютеров" />
    </siteMapNode>
    <siteMapNode url="~/Services.aspx" title="Услуги"  
          description="Наши услуги">
      <siteMapNode url="~/Training.aspx" title="Обучение"  
          description="Обучение программированию" />
      <siteMapNode url="~/Consulting.aspx" title="Консультации"  
          description="Консультации по эксплуатации" />
      <siteMapNode url="~/Support.aspx" title="Поддержка"  
          description="Помощь в сопровождении программ" />
    </siteMapNode>
  </siteMapNode>
</siteMap>
Листинг 33.2. Пример определения карты сайта в файле Web.sitemap
Иван Циферблат
Иван Циферблат
Россия, Таганрог, 36, 2000