Создание файла web.sitemap для веб-сайта ASP.NET - PullRequest
4 голосов
/ 28 ноября 2011

Я пытаюсь реализовать функциональность хлебных крошек на визуальном студийном сайте ASP C # с помощью элемента управления SiteMapPath.

Компания, в которой я работаю, унаследовала этот сайт, и мы, прежде всего, разработчики PHP, так что простите за незнание.

Первоначально, когда я опустил SiteMapPath из панели инструментов, я получил сообщение об ошибке, в котором говорится, что файл web.sitemap не найден.Затем я создал приложение с помощью приложения, которое предположительно выполняет работу для ASP-сайтов.

Сообщение об ошибке, которое мы получаем, говорит о том, что вам не разрешено иметь один и тот же URL дважды в структуре xml.Это кажется довольно смешным, так как многие страницы будут иметь одинаковые ссылки.

Некоторые исследования говорят мне добавить каждый URL с уникальной виртуальной бесполезной строкой запросов в xml.Это также кажется немного нелепым, и полный взлом - особенно с сайтом, содержащим потенциально сотни URL, повторяется.

Кто-нибудь может пролить немного света на это, или, может быть, даже совершенно другой подход?

Большое спасибо!

Ответы [ 2 ]

3 голосов
/ 28 ноября 2011

Обычно поставщик карты сайта по умолчанию (System.Web.XmlSiteMapProvider) требует, чтобы все URL-адреса были уникальными, поэтому он может легко разрешить выбранный в данный момент узел со свойством SiteMap.CurrentNode.

Это немного расстраивает, что приводит к тому, что люди цепляются за фиктивные строки запросов, как вы заметили. Для простого случая с несколькими дуплексами это обычно приемлемо.

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

В этом случае наиболее подходящим может быть пользовательский поставщик карты сайта.

0 голосов
/ 28 ноября 2011

"Сообщение об ошибке, которое мы получаем сейчас, говорит о том, что вам не разрешено иметь один и тот же URL дважды в структуре xml. Это кажется довольно нелепым, поскольку многие страницы имеют одинаковые ссылки."

Я думаю, что есть некоторая путаница: страницы, имеющие одинаковые ссылки, не имеют значения - web.sitemap - это просто карта XML с расположением страниц. Файл не записывает перекрестные ссылки на страницы. Но вы можете вкладывать вещи как таковые, если они имеют одинаковые имена:

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
    <siteMapNode url="/" title="Home">
        <siteMapNode url="/subdir" title="Subdir">
            <siteMapNode url="/subdir/page.aspx" title="Nested Page" />
        </sitemapNode>
        <siteMapNode url="/page.aspx" title="Root Page" />
    </siteMapNode>
</siteMap>
...