【问题标题】:SiteMapPath Disappears on sub pageSiteMapPath 在子页面上消失
【发布时间】:2009-02-10 21:50:07
【问题描述】:

由于某种原因,我的页面上的 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>

当我在报告页面的概览页面而不是 MyReport 页面时,将显示 SiteMapPath。将站点地图绑定到树视图后,我可以正确看到所有节点。

作品 - 在 MyReport 页面上显示我

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

在 MyReport 页面上消失,但在所有其他页面上可见

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

【问题讨论】:

  • 您使用什么类型的控件来显示站点地图。你说树视图工作正常吗?

标签: asp.net sitemap sitemappath


【解决方案1】:

我不是这方面的专家。我只是在我的页面上对其进行了测试,它运行良好。我所做的与您所做的唯一区别是我没有在父节点上指定文件名。虽然我偶然发现了那个,因为我的站点地图中不能有两次相同的路径。

<?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>

【讨论】:

  • 这个问题是我不希望 Reports 和 MyReport 处于同一级别,我希望 MyReport 显示 UNDER Report。我尝试将我的站点地图结构切换到您的站点,以再次查看发生了什么不同,它在树视图中显示了预期的结构,但站点地图路径仍然不显示。
  • 您的站点地图数据源是什么样的。尝试从 SiteMapPath 控件中一起删除 DataSourceID。如果您使用的是根 web.sitemap 文件,则不需要它。
【解决方案2】:

当控件不显示时,浏览器中的 URL 是什么?我敢打赌,您有一个查询字符串值或与 Reports/Myreport.aspx 不匹配的东西。如果页面的路径与站点地图节点中的项目不完全匹配,它将不会显示。

【讨论】:

    【解决方案3】:

    在页面的 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>
    

    【讨论】:

      猜你喜欢
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多