XmlSiteMapProvider.BuildSiteMap 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
從 XML 檔案載入網站地圖資訊,並將其建置在記憶體中。
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
傳回
傳回網站地圖導覽結構的根 SiteMapNode。
例外狀況
未正確初始化 XmlSiteMapProvider。
-或-
針對並非唯一的 <siteMapNode>
剖析了 siteMapFile
。
-或-
siteMapFile
所指定的檔案副檔名不是 .sitemap。
-或-
siteMapFile
指定的檔案不存在。
-或-
<siteMapNode>
的 provider
中所設的提供者傳回 Null 根節點。
已指定 siteMapFile
,但該路徑位於應用程式目前的目錄結構之外。
載入組態檔時發生錯誤。
-或-
組態檔的最上層項目不是 named <siteMap>
。
-或- 組態檔的最上層節點不只一個。
-或-
<siteMap>
的子系名稱不是 <siteMapNode>
。
-或-
針對 <siteMapNode>
剖析了未預期的屬性。
-或-
子項目巢狀位於已設定 provider
的 <siteMapNode>
下方。
-或-
<siteMapNode>
的 roles
包含無效字元。
-或-
針對並非唯一的 <siteMapNode>
剖析了 url
。
-或- 發現 SiteMapNode 的 Key 值重複。
-或-
對 SiteMapNode 指定了 ResourceKey 或 Title,或為節點定義的 custom
屬性包含明確資源運算式。
-或-
已將明確資源運算式套用至 Title 或 Description,或套用至 SiteMapNode 的 custom
屬性,但明確資訊無效。
-或- 剖析 SiteMapNode 的 Url 時發生錯誤。
在目前的網站地圖提供者集合中找不到具名提供者。
參考網站地圖檔案的 <siteMapNode>
其 siteMapFile
包含空字串。
範例
下列程式碼範例示範如何建立類別的新實例 XmlSiteMapProvider ,並將其初始化,以從 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>");
}
上述程式碼範例會使用位於 ASP.NET 應用程式之虛擬根目錄中的 XML 檔案。 檔案的格式如下:
<siteMap>
<siteMapNode title="RootNode" description="The root page." url="WebForm1.aspx">
<siteMapNode title="CurrentNode" description="Some sub page." url="WebForm2.aspx"/>
</siteMapNode>
</siteMap>
備註
BuildSiteMap呼叫方法,從持續性儲存體載入和建立網站地圖。
如需啟用安全性修剪時的預設行為,請參閱中的「備註」 IsAccessibleToUser 。
物件剖析 XmlSiteMapProvider 並載入網站地圖資料之後,所有載入的 SiteMapNode 物件和 SiteMapNodeCollection 集合都會成為唯讀。 當剖析 XmlSiteMapProvider Url 來自網站地圖檔案的屬性時,它會將應用程式相對 url 和相對 url 轉換為應用程式絕對虛擬路徑。
XmlSiteMapProvider訂閱檔案變更通知的網站地圖檔案。 如果對 sitemap 檔案進行任何變更, XmlSiteMapProvider 就會重載,並重建網站地圖結構。