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

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

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

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

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="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>

3 ответа

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

Назначить провайдера карты сайта в 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>

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

<?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>
Другие вопросы по тегам