2009-02-10 17 views
0

Pour une raison quelconque sur ma page, mon SiteMapPath disparaît.SiteMapPath disparaît sur la sous-page

Structure du site:

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> 

Le SiteMapPath affiche quand je suis sur la page d'aperçu de la page des rapports, mais pas la page de MyReport. Avec le sitemap lié à une arborescence, je vois tous mes nœuds correctement.

Works - me montre sur MyReport page

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

Disparaît sur MyReport page mais visible sur tous les autres

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

Quel type de contrôle que vous utilisez pour afficher le plan du site. vous avez dit qu'une arborescence fonctionne correctement? – bendewey

+0

Le contrôle SiteMapPath –

Répondre

0

Je ne suis pas un expert en la matière. Je l'ai juste testé sur mes pages et ça a bien fonctionné. La seule différence entre ce que je fais et le vôtre est que je ne spécifie pas de nom de fichier sur le nœud parent. Bien que je suis tombé dans celui-là parce que je ne pouvais pas avoir le même chemin deux fois dans mon 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/" 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> 
+0

Ce problème est que je ne veux pas que Reports et MyReport soient du même niveau, mais que MyReport affiche UNDER Report. J'ai essayé de changer ma structure de sitemap pour la vôtre pour voir ce qui s'est passé différemment une fois encore, il montre la structure comme prévu dans l'arborescence, mais le sitemappath ne s'affiche toujours pas. –

+0

À quoi ressemble votre SiteSource DataSource. Essayez de supprimer le DataSourceID tous ensemble à partir du contrôle SiteMapPath. Ce n'est pas nécessaire si vous utilisez un fichier racine web.sitemap. – bendewey

0

Quelle est l'URL dans votre navigateur lorsque le contrôle n'est pas affiché? Je parie que vous avez une valeur de chaîne de requête ou quelque chose qui ne correspond pas à Reports/Myreport.aspx. Si le chemin de la page ne correspond pas exactement à un élément du sitemapnode, il ne s'affichera pas.

0

Assigner fournisseur de plan du site dans page_load de la page

SiteMapPath1.SiteMapProvider = "DefaultSiteMap" 

intérieur web.config

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