2009-08-02 12 views

Respuesta

11

Hay un par de formas de hacerlo.

Ponga un marcador de posición en la página:

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

Ahora cree un TreeView y asignar un SiteMapDataSource que ya se encuentra en la página:

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

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

O puede asignar el SiteMap programación:

// 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); 

Configuración del mapa del sitio mediante programación también le permite cambiar los archivos basados en reglas de negocios.

Esto también puede hacerse a través de la 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> 

y luego en su página aspx acaba de cambiar proveedor:

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

Esperanza esto ayuda

+0

Por desgracia, todavía tiene para guardar el mapa del sitio en un archivo. – tsilb

+0

Sí, por defecto, debe haber un archivo de mapa del sitio. Sin embargo, puede implementar su propio SiteMapProvider que podría devolver un mapa del sitio generado dinámicamente: http://msdn.microsoft.com/en-us/library/aa479033.aspx - http://msdn.microsoft.com/en-us/library /aa479320.aspx. Si busca en Google un "proveedor de sitios personalizado", hay muchas publicaciones al respecto. –

Cuestiones relacionadas