SiteMapProvider.FindSiteMapNode SiteMapProvider.FindSiteMapNode SiteMapProvider.FindSiteMapNode SiteMapProvider.FindSiteMapNode Method

定義

派生クラスでオーバーライドされた場合は、ページを表す SiteMapNode オブジェクトを取得します。When overridden in a derived class, retrieves a SiteMapNode object that represents a page.

オーバーロード

FindSiteMapNode(String) FindSiteMapNode(String) FindSiteMapNode(String) FindSiteMapNode(String)

派生クラスでオーバーライドされた場合は、指定した URL のページを表す SiteMapNode オブジェクトを取得します。When overridden in a derived class, retrieves a SiteMapNode object that represents the page at the specified URL.

FindSiteMapNode(HttpContext) FindSiteMapNode(HttpContext) FindSiteMapNode(HttpContext) FindSiteMapNode(HttpContext)

現在要求されているページを表す SiteMapNode オブジェクトを、指定した HttpContext オブジェクトを使用して取得します。Retrieves a SiteMapNode object that represents the currently requested page using the specified HttpContext object.

FindSiteMapNode(String) FindSiteMapNode(String) FindSiteMapNode(String) FindSiteMapNode(String)

派生クラスでオーバーライドされた場合は、指定した URL のページを表す SiteMapNode オブジェクトを取得します。When overridden in a derived class, retrieves a SiteMapNode object that represents the page at the specified URL.

public:
 abstract System::Web::SiteMapNode ^ FindSiteMapNode(System::String ^ rawUrl);
public abstract System.Web.SiteMapNode FindSiteMapNode (string rawUrl);
abstract member FindSiteMapNode : string -> System.Web.SiteMapNode
Public MustOverride Function FindSiteMapNode (rawUrl As String) As SiteMapNode

パラメーター

rawUrl
String String String String

SiteMapNode を取得するページを示す URL。A URL that identifies the page for which to retrieve a SiteMapNode.

戻り値

rawURL で示されるページを表す SiteMapNode。対応する SiteMapNode が見つからなかった場合、またはセキュリティ トリミングが有効で、現在のユーザーの SiteMapNode を返すことができない場合は、nullA SiteMapNode that represents the page identified by rawURL; otherwise, null, if no corresponding SiteMapNode is found or if security trimming is enabled and the SiteMapNode cannot be returned for the current user.

次のコード例は、抽象FindSiteMapNode SiteMapProviderクラスを実装するクラスにメソッドを実装する方法を示しています。The following code example demonstrates how to implement the FindSiteMapNode method in a class that implements the abstract SiteMapProvider class. SimpleTextSiteMapProvider 、という名前FindUrlのヘルパーメソッドを使用して、 HttpContext現在表示されているページの URL をオブジェクトから取得します。The SimpleTextSiteMapProvider uses a helper method, named FindUrl, to get the URL of the currently displayed page from the HttpContext object.

このコード例は、 SiteMapProviderクラスに対して提供される大規模な例の一部です。This code example is part of a larger example provided for the SiteMapProvider class.

// 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;
  }
}
' 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
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);
  }
}
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

注釈

SiteMapProviderクラスから派生するクラスは、抽象FindSiteMapNodeメソッドを実装する必要があります。Classes that derive from the SiteMapProvider class must implement the abstract FindSiteMapNode method.

指定する URL には、仮想または絶対 URL を指定できます。The URL provided can be a virtual or absolute URL. また、などのアプリケーション相対構文を~/apprelativedirectory使用する URL である場合もあります。It might also be a URL that uses application-relative syntax, such as ~/apprelativedirectory. FindSiteMapNodeメソッドの実装で、アプリケーション相対構文が正しく解析および処理されることを確認します。Ensure that any implementation of the FindSiteMapNode method parse and handle application-relative syntax properly.

ASP.NET の既定のサイトマッププロバイダーであるSiteMapNode クラスは、クラスが保持するさまざまなコレクションのキーとして、オブジェクトのURLを使用します。XmlSiteMapProviderThe 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. したがって、がSiteMapNode URL を提供する場合は、サイトマッププロバイダーのスコープ内で一意である必要があります。Therefore, if a SiteMapNode provides a URL, it must be unique within the scope of the site map provider. URL が指定されていない場合は、 SiteMapNodeを識別するために一意の識別子が生成されます。If no URL is provided, a unique identifier is generated to identify the SiteMapNode.

注意 (継承者)

派生クラスでFindSiteMapNode(String)メソッドをオーバーライドする場合、URL に一致するSiteMapNodeオブジェクトが現在のサイトマップのプロバイダーによって検出されず、プロバイダーが子プロバイダーをサポートしている場合は、子プロバイダーに検索を拡張してください。When overriding the FindSiteMapNode(String) 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.

こちらもご覧ください

FindSiteMapNode(HttpContext) FindSiteMapNode(HttpContext) FindSiteMapNode(HttpContext) FindSiteMapNode(HttpContext)

現在要求されているページを表す SiteMapNode オブジェクトを、指定した HttpContext オブジェクトを使用して取得します。Retrieves a SiteMapNode object that represents the currently requested page using the specified HttpContext object.

public:
 virtual System::Web::SiteMapNode ^ FindSiteMapNode(System::Web::HttpContext ^ context);
public virtual System.Web.SiteMapNode FindSiteMapNode (System.Web.HttpContext context);
abstract member FindSiteMapNode : System.Web.HttpContext -> System.Web.SiteMapNode
override this.FindSiteMapNode : System.Web.HttpContext -> System.Web.SiteMapNode
Public Overridable Function FindSiteMapNode (context As HttpContext) As SiteMapNode

パラメーター

context
HttpContext HttpContext HttpContext HttpContext

要求されているページの URL とノード情報を比較するために使用する HttpContextThe HttpContext used to match node information with the URL of the requested page.

戻り値

現在要求されているページを表す SiteMapNode。対応する SiteMapNodeSiteMapNode にない場合、またはページ コンテキストが null の場合は、nullA SiteMapNode that represents the currently requested page; otherwise, null, if no corresponding SiteMapNode can be found in the SiteMapNode or if the page context is null.

注釈

メソッドFindSiteMapNodeは、抽象FindSiteMapNodeメソッドを呼び出して、 SiteMapNode要求の未加工の URL または仮想パスに基づいて、現在要求されているページのオブジェクトを取得します。The FindSiteMapNode method calls the abstract FindSiteMapNode method to retrieve a SiteMapNode object for the currently requested page based on the raw URL or the virtual path of the request. に対応するSiteMapNodeが見つからない場合はnull、が返されます。 SiteMapIf no corresponding SiteMapNode is found in the SiteMap, null is returned.

メソッドは、 SiteMapNodeが既定でユーザーにアクセスできるかどうかを確認しません。 FindSiteMapNodeThe FindSiteMapNode method does not check whether a SiteMapNode is accessible to a user, by default.

こちらもご覧ください

適用対象