Udostępnij za pośrednictwem


XmlSiteMapProvider.BuildSiteMap Metoda

Definicja

Ładuje informacje mapy witryny z pliku XML i tworzy je w pamięci.

public:
 override System::Web::SiteMapNode ^ BuildSiteMap();
public override System.Web.SiteMapNode BuildSiteMap ();
override this.BuildSiteMap : unit -> System.Web.SiteMapNode
Public Overrides Function BuildSiteMap () As SiteMapNode

Zwraca

SiteMapNode

Zwraca katalog główny SiteMapNode struktury nawigacji mapy witryny.

Wyjątki

Nie XmlSiteMapProvider zainicjowano prawidłowo.

-lub- Jest siteMapFile analizowany dla, <siteMapNode> który nie jest unikatowy.

-lub- Plik określony przez siteMapFile program nie ma rozszerzenia nazwy pliku .sitemap.

-lub- Plik określony przez siteMapFile nie istnieje.

-lub- Dostawca skonfigurowany w węźle provider typu zwraca węzeł główny o wartości <siteMapNode> null.

Wartość siteMapFile jest określona, ale ścieżka znajduje się poza bieżącą strukturą katalogów dla aplikacji.

Wystąpił błąd podczas ładowania pliku konfiguracji.

-lub- Najwyższym elementem pliku konfiguracji nie jest named <siteMap> .

-lub- W pliku konfiguracji istnieje więcej niż jeden górny węzeł.

-lub- Podrzędny z <siteMap> ma nazwę inną niż <siteMapNode> .

-lub- Nieoczekiwany atrybut jest analizowany dla <siteMapNode> .

-lub- Podgrupy są zagnieżdżone pod <siteMapNode> elementem , w którym provider ustawiono element .

-lub- Znak roles zawiera <siteMapNode> nieprawidłowe znaki.

-lub- Jest url analizowany dla, <siteMapNode> który nie jest unikatowy.

-lub- Napotkano SiteMapNode wartość ze zduplikowaną wartością Key dla .

-lub- Element ResourceKey lub został określony dla Title SiteMapNode atrybutu lub custom zdefiniowanego dla węzła zawierającego jawne wyrażenie zasobu.

-lub- Jawne wyrażenie zasobu zostało zastosowane do Title lub Description do atrybutu custom a, ale SiteMapNode jawne informacje były nieprawidłowe.

-lub- Wystąpił błąd podczas analizowania Url wartości SiteMapNode .

Nazwanego dostawcy nie można znaleźć w bieżącej kolekcji dostawców map witryn.

Element <siteMapNode> odwołujący się do pliku mapy witryny zawiera pusty ciąg dla siteMapFile pliku .

A siteMapFile w pliku używa ścieżki <siteMapNode> fizycznej.

-lub- Wystąpił błąd podczas próby analizy ścieżki wirtualnej do pliku określonego w pliku siteMapFile .

Przykłady

W poniższym przykładzie kodu pokazano, jak utworzyć nowe wystąpienie klasy i zainicjować je w celu utworzenia mapy XmlSiteMapProvider witryny z danych XML.

<%@ Page Language="c#" %>  
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
 <SCRIPT runat="server">  
 private void Page_Load(object sender, System.EventArgs e)  
 {  
     // Create an instance of the XmlSiteMapProvider class.  
     XmlSiteMapProvider testXmlProvider = new XmlSiteMapProvider();  
     NameValueCollection providerAttributes = new NameValueCollection(1);  
     providerAttributes.Add("siteMapFile","test.sitemap");  
     // Initialize the provider with a provider name and file name.  
     testXmlProvider.Initialize("testProvider", providerAttributes);  

     // The BuildSiteMap method is implicitly called when the   
     // RootNode property is accessed.  

     // Prints "/myvirtualdirectory/WebForm1.aspx"  
     Response.Write(testXmlProvider.RootNode.Url + "<BR>");  
     // Prints "/myvirtualdirectory/WebForm2.aspx"  
     Response.Write(testXmlProvider.CurrentNode.Url + "<BR>");  
 }  

W poprzednim przykładzie kodu użyto pliku XML, który znajduje się w wirtualnym katalogu głównym ASP.NET aplikacji. Plik ma następujący format:

<siteMap>  
     <siteMapNode title="RootNode" description="The root page." url="WebForm1.aspx">  
         <siteMapNode title="CurrentNode" description="Some sub page." url="WebForm2.aspx"/>  
     </siteMapNode>  
 </siteMap>  

Uwagi

Metoda BuildSiteMap jest wywoływana w celu załadowania i skompilowania mapy witryny z magazynu trwałego.

Domyślne zachowanie po włączeniu przycinania zabezpieczeń, zobacz "Uwagi" w IsAccessibleToUser .

Gdy obiekt analizuje i ładuje dane mapy witryny, wszystkie załadowane obiekty i kolekcje XmlSiteMapProvider SiteMapNode są tylko do SiteMapNodeCollection odczytu. Podczas analizowania właściwości z pliku mapy witryny konwertuje adresy URL względne dla aplikacji, a także względne adresy URL, na ścieżki wirtualne bezwzględne XmlSiteMapProvider Url aplikacji.

Obiekt XmlSiteMapProvider subskrybuje powiadomienia o zmianie pliku sitemap. W przypadku zmiany pliku .sitemap plik zostanie ponownie załadowany, a struktura XmlSiteMapProvider mapy witryny zostanie ponownie sbudowana.

Dotyczy

Zobacz też