在做一个站 后台MasterPage用了Web.sitemap导航 可以正常显示
代码如下:
<asp:SiteMapPath ID="SiteMapPath1" runat="server" PathSeparator=">>">
                    <PathSeparatorStyle Font-Bold="True" ForeColor="#507CD1" />
                    <CurrentNodeStyle ForeColor="#333333" />
                    <NodeStyle Font-Bold="True" ForeColor="#284E98" />
                    <RootNodeStyle Font-Bold="True" ForeColor="#507CD1" />
                </asp:SiteMapPath>
                <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" StartingNodeUrl="~/Web.sitemap" />然后在前台也用了一个Site.sitemap在前台导航  代码就把 <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" StartingNodeUrl="~/Site.sitemap" />改了下  
请教下高手 为什么前台的导航不显示呢?也不报错

解决方案 »

  1.   

    当用到多个站点地图时,要动态指定,可在MasterPage的PageLoad事件中指定,如下:
    this.smpDataSource.Provider = System.Web.SiteMap.Providers["ComXmlSiteMapProvider"];当然,你得在web.config中加入站点地图的相关内容,如:
    <siteMap defaultProvider="PrisonXmlSiteMapProvider" enabled="true">
    <providers>
    <add name="PrisonXmlSiteMapProvider"
          description="SiteMap provider that reads in .sitemap files."
          type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
          siteMapFile="PrisonWeb.sitemap" />
    <add name="ComXmlSiteMapProvider"
          description="SiteMap provider that reads in .sitemap files."
          type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
          siteMapFile="ComWeb.sitemap" />
    </providers>
    </siteMap>
      

  2.   

    就把<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" StartingNodeUrl="~/Web.sitemap" />改为<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" StartingNodeUrl="~/Site.sitemap" />   其他的都没变
      

  3.   

    不知道asp:SiteMapDataSource 怎么用。记的以前用<asp:SiteMapPath的时候,sitemap文件只能是Web.sitemap固定名称的。不知道asp:SiteMapDataSource是不是现在支持多个sitemap文件了,如果是支持多个,就看看Site.sitemap中的格式对不对。
      

  4.   

    晕,格式是完全正确的,只是改了<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" StartingNodeUrl="~/Site.sitemap" />路径,其它的都一样,或许就如楼上说的一样,它是不是就支持一个sitemap??
       因为我把Site.sitemap里的粘到Web.sitemap里可以正常显示,同时我发现删除<asp:SiteMapDataSource>都可以 看来<asp:SiteMapDataSource>没有用啊?
    还望高手指点
      

  5.   

    请注意我上面的回复。
    SiteMap默认情况下是一个固定名称的XML文件,
    如果你有多个(两个或以上),则需要手动在web.config里做配置,并在适当的地方(想加载站点地图的地方)用this.smpDataSource.Provider = System.Web.SiteMap.Providers["ComXmlSiteMapProvider"];这样的语句来指定,这样你就可以有多个,甚至可以为不同权限的用户指定不同的站点导航了。
      

  6.   

    ljleager(飞必高)我用的2.0的,点不出来description  siteMapFile属性
      

  7.   

    你的xml文件添加好之好.不用指定数据来源.拉出来就可以用了!!
      

  8.   

    我说的也是2.0啊,我上面的例子用到两个站点地图:PrisonWeb.sitemap和ComWeb.sitemap,在web.config里的配置方式上面例子已经贴出来了,你复制过去改一下站点地图文件名为你实际的文件名就行了.
    下面是在MasterPage的PageLoad事件中指定用那一个站点地图的例子:
     protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                if (Session["PrisonCode"].ToString().ToUpper() == "PNOTIN")
                {
                    //超级用户,显示全部可用菜单项
                    this.smpDataSource.Provider = System.Web.SiteMap.Providers["ComXmlSiteMapProvider"];
                 }
                else
                {
                    //非超级管理,仅显示XX可见的菜单项
                    this.smpDataSource.Provider = System.Web.SiteMap.Provider;
                 }
            }
        }
      

  9.   

    你的xml文件添加好之好.不用指定数据来源.拉出来就可以用了!!——啥意思?
    我的xml文件加了数据源还是不显示呢