C1SiteMap Features > Data Binding > Custom SiteMap Provider |
To create a custom SiteMap provider, inherit from the StaticSiteMapProvider class and then implement the requirements. Override the two methods:
The following code shows how to create a simple site map provider:
To write code in C#
public partial class C1CustomSiteMapProvider : StaticSiteMapProvider { private readonly object C1siteMapLock = new object(); private SiteMapNode C1SiteMapRoot; // Override BuildSiteMap() method public override SiteMapNode BuildSiteMap() { // Use a lock to provide thread safety lock (C1siteMapLock) { if (C1SiteMapRoot != null) { return C1SiteMapRoot; } base.Clear(); CreateSiteMapRoot(); CreateSiteMapNodes(); return C1SiteMapRoot; } } // Override GetRootNodeCore() method protected override SiteMapNode GetRootNodeCore() { return BuildSiteMap(); } private void CreateSiteMapRoot() { C1SiteMapRoot = new SiteMapNode(this, "C1RootNode", "~/Default.aspx", "C1RootNode"); AddNode(C1SiteMapRoot); } private void CreateSiteMapNodes() { SiteMapNode node = null; for (int num = 1; num <= 3; num++) { node = new SiteMapNode(this, string.Format("C1ChildNode{0}", num), string.Format("~/Web Form{0}.aspx", num), string.Format("C1ChildNode{0}", num)); AddNode(node, C1SiteMapRoot); } } }
To write code in Visual Basic
Public Class C1CustomSiteMapProvider Inherits StaticSiteMapProvider Private ReadOnly C1siteMapLock As New Object() Private C1SiteMapRoot As SiteMapNode ' Override BuildSiteMap() method Public Overrides Function BuildSiteMap() As SiteMapNode ' Use a lock to provide thread safety SyncLock C1siteMapLock If C1SiteMapRoot IsNot Nothing Then Return C1SiteMapRoot End If MyBase.Clear() CreateSiteMapRoot() CreateSiteMapNodes() Return C1SiteMapRoot End SyncLock End Function ' Override GetRootNodeCore() method Protected Overrides Function GetRootNodeCore() As SiteMapNode Return BuildSiteMap() End Function Private Sub CreateSiteMapRoot() C1SiteMapRoot = New SiteMapNode(Me, "C1RootNode", "~/Default.aspx", "C1RootNode") AddNode(C1SiteMapRoot) End Sub Private Sub CreateSiteMapNodes() Dim node As SiteMapNode = Nothing For num As Integer = 1 To 3 node = New SiteMapNode(Me, String.Format("C1ChildNode{0}", num), String.Format("~/Web Form{0}.aspx", num), String.Format("C1ChildNode{0}", num)) AddNode(node, C1SiteMapRoot) Next End Sub End Class
The custom SiteMap Provider has to be registered in the web.config file. Add the following markup within the <system.web></system.web>
tags:
Markup |
Copy Code
|
---|---|
<siteMap defaultProvider="C1CustomSiteMapProvider" enabled="true"> <providers> <clear/> <add name="C1CustomSiteMapProvider" type="WebApplication1.C1CustomSiteMapProvider"/> </providers> </siteMap> |