SiteMapPath исчезает на подстранице

Почему-то на моей странице пропадает мой SiteMapPath.

Структура сайта:

WebApp
-Default.aspx
-> Reports\
----Default.aspx
----MyReport.aspx

Веб.карта сайта

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

SiteMapPath будет отображаться, когда я нахожусь на странице обзора страницы отчетов, но не на странице MyReport. С картой сайта, привязанной к древовидной структуре, я правильно вижу все свои узлы.

Работает - показывает меня на странице MyReport

<asp:TreeView ID="TreeView1" runat="Server" DataSourceID="SitePathDataSource">
</asp:TreeView>

Исчезает на странице MyReport, но отображается на всех остальных

<asp:SiteMapPath ID="SiteMapPath1" runat="server" DataSourceID="SitePathDataSource">
</asp:SiteMapPath>

person Chris Marisic    schedule 10.02.2009    source источник
comment
Какой тип управления вы используете для отображения карты сайта. вы сказали, что древовидное представление работает правильно?   -  person bendewey    schedule 11.02.2009


Ответы (3)


Я не совсем специалист в этом. Я только что проверил его на своих страницах, и он работал нормально. Единственная разница между тем, что я делаю, и вашим, заключается в том, что я не указываю имя файла на родительском узле. Хотя я как бы наткнулся на это, потому что я не мог дважды указать один и тот же путь в своей карте сайта.

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >  
    <siteMapNode url="~/Default.aspx" title="Overview"  description="Overview">   
        <siteMapNode url="~/Reports/" title="Reports"  description="Reports" >      
            <siteMapNode url="~/Reports/Default.aspx" title="Reports Home"  description="Home" />
            <siteMapNode url="~/Reports/MyReport.aspx" title="MyReport"  description="MyReport" />    
        </siteMapNode>  
    </siteMapNode>
</siteMap>
person bendewey    schedule 10.02.2009
comment
Эта проблема заключается в том, что я не хочу, чтобы отчеты и MyReport находились на одном уровне, я хочу, чтобы MyReport отображал UNDER Report. Я попытался переключить свою структуру карты сайта на вашу, чтобы еще раз увидеть, что произошло по-другому, она показывает структуру, как и ожидалось, в древовидном представлении, но путь карты сайта по-прежнему не отображается. - person Chris Marisic; 11.02.2009
comment
Как выглядит ваш источник данных SiteMap. Попробуйте полностью удалить DataSourceID из элемента управления SiteMapPath. Это не требуется, если вы используете корневой файл web.sitemap. - person bendewey; 11.02.2009

Какой URL-адрес отображается в вашем браузере, когда элемент управления не отображается? Могу поспорить, что у вас есть значение строки запроса или что-то, что не соответствует Reports/Myreport.aspx. Если путь к странице не соответствует элементу точно в узле карты сайта, он не будет отображаться.

person rball    schedule 25.03.2009

Назначить провайдера карты сайта в page_load страницы

SiteMapPath1.SiteMapProvider = "DefaultSiteMap"

внутри web.config

    <siteMap defaultProvider="DefaultSiteMap" enabled="true">
<providers>
<add name="DefaultSiteMap" type="System.Web.XmlSiteMapProvider" siteMapFile="~\SiteMaps
\Default.sitemap" />
</providers>

person Lala    schedule 21.10.2014