Меня попросили создать пользовательский элемент управления asp.net, который позволяет настраивать навигацию между дочерними сайтами веб-сайта SharePoint 2007. Сайты имитируют школьную структуру с семестрами, в которых есть разные группы классов. Вот упрощенная версия структуры сайта:
Site Root
Search
Semester1
Class Group 1
Class 1
Page1.aspx
Page2.aspx
Class 2
Page1.aspx
Page2.aspx
Class Group 2
Class 3
Page1.aspx
Page2.aspx
Class 4
Page1.aspx
Page2.aspx
Semester2
Class Group 1
Class 1
Page1.aspx
Page2.aspx
Class 2
Page1.aspx
Page2.aspx
Class Group 2
Class 3
Page1.aspx
Page2.aspx
Class 4
Page1.aspx
Page2.aspx
Some Other Subsites
UserControl будет размещен на страницах классов .aspx. Его цель - позволить пользователю переходить к идентичным страницам между разными группами классов.
НАПРИМЕР. Скажем, я нахожусь на семестре 1 / классе 1 / классе 1 / Page2.aspx. UserControl позволит мне выбрать любой из других классов в Semester1. При выборе он автоматически перейдет к [выбранному классу] /Page2.aspx (потому что я сейчас нахожусь на странице Page2.aspx).
До сегодняшнего дня я никогда не использовал SiteMapProvider. До сих пор мне удавалось только программно пройтись по структуре сайта и распечатать простую карту сайта на страницу, используя по умолчанию CombinedNavSiteMapProvider PortalSiteMapProvider. Я думаю, что мне нужно, но не знаю, как это сделать:
- Получите / создайте частичную структуру данных карты сайта, где корневой узел является родительским семестром текущей страницы. При необходимости это может быть моя собственная структура данных, встроенная в код. Я хочу привязать это к элементу управления меню. Кроме того, я бы хотел, чтобы в пункте корневого меню был пользовательский текст, например «Изменить класс» вместо Semester1.
Оттуда, я думаю, я могу использовать события меню для управления навигацией. Пример меню UserControl, если я нахожусь в Semester1 / Class Group 1 / Class 1 / Page2.aspx:
Change Class
Class Group 1
Class 1
Class 2
Class Group 2
Class 3
Class 4
Как я могу выполнить отмеченный выше пункт?