2009-08-02 91 views

回答

11

有几种方法可以做到这一点。

放在一个占位符在页面上:

<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder> 

现在创建一个TreeView和分配的SiteMapDataSource这是已经在页面上:

//Code Behind 
    TreeView tv1 = new TreeView(); 
    tv1.DataSourceID = "SiteMapDataSource1"; 
    PlaceHolder1.Controls.Add(tv1); 

    //aspx 
    <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" /> 

或者您可以通过编程指定网站地图:

// Create an instance of the XmlSiteMapProvider class. 
    XmlSiteMapProvider testXmlProvider = new XmlSiteMapProvider(); 
    NameValueCollection providerAttributes = new NameValueCollection(1); 
    providerAttributes.Add("siteMapFile", "Web2.sitemap"); 

    // Initialize the provider with a provider name and file name. 
    testXmlProvider.Initialize("testProvider", providerAttributes); 

    // Call the BuildSiteMap to load the site map information into memory. 
    testXmlProvider.BuildSiteMap(); 

    SiteMapDataSource smd = new SiteMapDataSource(); 
    smd.Provider = testXmlProvider; 

    TreeView tv2 = new TreeView(); 
    tv2.DataSource = smd; 
    tv2.DataBind(); //Important or all is blank 
    PlaceHolder1.Controls.Add(tv2); 

以编程方式设置SiteMap还允许您切换文件关于商业规则。

这也可以通过Web.Config中完成:

<configuration> 
    <!-- other configuration sections --> 
    <system.web> 
    <!-- other configuration sections --> 
    <siteMap> 
     <providers> 
     <add name="SiteMap1" type="System.Web.XmlSiteMapProvider" siteMapFile="~/Web.sitemap" /> 
     <add name="SiteMap2" type="System.Web.XmlSiteMapProvider" siteMapFile="~/Web2.sitemap" /> 
     </providers> 
    </siteMap> 
    </system.web> 
    </configuration> 

,然后在你的aspx页面只需切换提供商:

<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" SiteMapProvider="SiteMap2" /> 

希望这有助于

+0

不幸的是,你仍然有将网站地图保存到文件。 – tsilb 2009-08-10 06:03:14

相关问题