Click to Rate and Give Feedback
MSDN
MSDN Library
.NET Development
.NET Framework 3.5
 FindSiteMapNode Method (String)
This page is specific to
Microsoft Visual Studio 2008/.NET Framework 3.5

Other versions are also available for the following:
.NET Framework Class Library
SiteMapProvider..::.FindSiteMapNode Method (String)

Updated: November 2007

When overridden in a derived class, retrieves a SiteMapNode object that represents the page at the specified URL.

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

Visual Basic (Declaration)
Public MustOverride Function FindSiteMapNode ( _
    rawUrl As String _
) As SiteMapNode
Visual Basic (Usage)
Dim instance As SiteMapProvider
Dim rawUrl As String
Dim returnValue As SiteMapNode

returnValue = instance.FindSiteMapNode(rawUrl)
C#
public abstract SiteMapNode FindSiteMapNode(
    string rawUrl
)
Visual C++
public:
virtual SiteMapNode^ FindSiteMapNode(
    String^ rawUrl
) abstract
J#
public abstract SiteMapNode FindSiteMapNode(
    String rawUrl
)
JScript
public abstract function FindSiteMapNode(
    rawUrl : String
) : SiteMapNode

Parameters

rawUrl
Type: System..::.String

A URL that identifies the page for which to retrieve a SiteMapNode.

Return Value

Type: System.Web..::.SiteMapNode

A SiteMapNode that represents the page identified by rawURL; otherwise, nullNothingnullptra null reference (Nothing in Visual Basic), if no corresponding SiteMapNode is found or if security trimming is enabled and the SiteMapNode cannot be returned for the current user.

Classes that derive from the SiteMapProvider class must implement the abstract FindSiteMapNode method.

The URL provided can be a virtual or absolute URL. It might also be a URL that uses application-relative syntax, such as ~/apprelativedirectory. Ensure that any implementation of the FindSiteMapNode method parse and handle application-relative syntax properly.

The XmlSiteMapProvider class, which is the default site map provider for ASP.NET, uses the URL of a SiteMapNode object as a key in the various collections that the classes maintain. Therefore, if a SiteMapNode provides a URL, it must be unique within the scope of the site map provider. If no URL is provided, a unique identifier is generated to identify the SiteMapNode.

Notes to Inheritors:

When overriding the FindSiteMapNode method in a derived class, be sure to extend the search to any child providers, if a SiteMapNode object that matches the URL is not found by the provider in the current site map and the provider supports child providers.

The following code example demonstrates how to implement the FindSiteMapNode method in a class that implements the abstract SiteMapProvider class. The SimpleTextSiteMapProvider uses a helper method, named FindUrl, to get the URL of the currently displayed page from the HttpContext object.

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

Visual Basic
' Implement the FindSiteMapNode method.
Public Overrides Function FindSiteMapNode(ByVal rawUrl As String) As SiteMapNode
  ' Does the root node match the URL?
  If RootNode.Url = rawUrl Then
    Return RootNode
  Else
    Dim candidate As SiteMapNode = Nothing
    ' Retrieve the SiteMapNode that matches the URL.
    SyncLock Me
      candidate = GetNode(siteMapNodes, rawUrl)
    End SyncLock
    Return candidate
  End If
End Function 'FindSiteMapNode

C#
// Implement the FindSiteMapNode method.
public override SiteMapNode FindSiteMapNode(string rawUrl)
{

  // Does the root node match the URL?
  if (RootNode.Url == rawUrl)
  {
    return RootNode;
  }
  else
  {
    SiteMapNode candidate = null;
    // Retrieve the SiteMapNode that matches the URL.
    lock (this)
    {
      candidate = GetNode(siteMapNodes, rawUrl);
    }
    return candidate;
  }
}

Visual Basic
Private Function GetNode(ByVal list As ArrayList, ByVal url As String) As SiteMapNode
  Dim i As Integer
  For i = 0 To list.Count - 1
    Dim item As DictionaryEntry = CType(list(i), DictionaryEntry)
    If CStr(item.Key) = url Then
      Return CType(item.Value, SiteMapNode)
    End If
  Next i
  Return Nothing
End Function 'GetNode


' Get the URL of the currently displayed page.
Private Function FindCurrentUrl() As String
  Try
    ' The current HttpContext.
    Dim currentContext As HttpContext = HttpContext.Current
    If Not (currentContext Is Nothing) Then
      Return currentContext.Request.RawUrl
    Else
      Throw New Exception("HttpContext.Current is Invalid")
    End If
  Catch e As Exception
    Throw New NotSupportedException("This provider requires a valid context.", e)
  End Try
End Function 'FindCurrentUrl


C#
private SiteMapNode GetNode(ArrayList list, string url)
{
  for (int i = 0; i < list.Count; i++)
  {
    DictionaryEntry item = (DictionaryEntry)list[i];
    if ((string)item.Key == url)
      return item.Value as SiteMapNode;
  }
  return null;
}

// Get the URL of the currently displayed page.
private string FindCurrentUrl()
{
  try
  {
    // The current HttpContext.
    HttpContext currentContext = HttpContext.Current;
    if (currentContext != null)
    {
      return currentContext.Request.RawUrl;
    }
    else
    {
      throw new Exception("HttpContext.Current is Invalid");
    }
  }
  catch (Exception e)
  {
    throw new NotSupportedException("This provider requires a valid context.",e);
  }
}

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Processing
© 2008 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Page view tracker