Export (0) Print
Expand All

SiteMapProvider.RootProvider Property

Gets the root SiteMapProvider object in the current provider hierarchy.

Namespace:  System.Web
Assembly:  System.Web (in System.Web.dll)

public virtual SiteMapProvider RootProvider { get; }

Property Value

Type: System.Web.SiteMapProvider
An SiteMapProvider that is the top-level site map provider in the provider hierarchy that the current provider belongs to.

ExceptionCondition
ProviderException

There is a circular reference to the current site map provider.

All classes that implement the SiteMapProvider class can support the concept of a site map provider hierarchy. Any hierarchical relationships between providers are maintained outside the scope of a SiteMapProviderCollection collection by the providers themselves. For an example of a functional provider hierarchy, see XmlSiteMapProvider.

The following code example demonstrates how to implement the RootProvider property in a class that implements the abstract SiteMapProvider class. The SimpleTextSiteMapProvider uses simple logic to determine whether the current provider is part of a provider hierarchy. If the provider is part of a hierarchy, it uses the RootProvider property for the parent provider as its own. If the provider is not part of a hierarchy, the provider is its own root provider.

This code example is part of a larger example provided for the SiteMapProvider class.

// Implement the ParentProvider property. 
public override SiteMapProvider ParentProvider
{
  get
  {
    return parentSiteMapProvider;
  }
  set
  {
    parentSiteMapProvider = value;
  }
}

// Implement the RootProvider property. 
public override SiteMapProvider RootProvider
{
  get
  {
    // If the current instance belongs to a provider hierarchy, it 
    // cannot be the RootProvider. Rely on the ParentProvider. 
    if (this.ParentProvider != null)
    {
      return ParentProvider.RootProvider;
    }
    // If the current instance does not have a ParentProvider, it is 
    // not a child in a hierarchy, and can be the RootProvider. 
    else
    {
      return this;
    }
  }
}

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0
Show:
© 2015 Microsoft