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)

Во время переопределения в производном классе получается объект SiteMapNode, представляющий страницу в указанном URL-адресе.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)

Во время переопределения в производном классе получается объект SiteMapNode, представляющий страницу в указанном URL-адресе.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

URL-адрес, определяющий страницу, для которой необходимо извлечь SiteMapNode.A URL that identifies the page for which to retrieve a SiteMapNode.

Возвраты

Объект SiteMapNode, представляющий страницу, определенную объектом rawURL; в противном случае — значение null, если соответствующий объект SiteMapNode не найден или если фильтрация по ролям безопасности разрешена и объект SiteMapNode не может быть возвращен для текущего пользователя.A 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. Компонент использует вспомогательный метод с именем FindUrl, чтобы получить URL-адрес отображаемой в HttpContext данный момент страницы из объекта. SimpleTextSiteMapProviderThe 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. Это также может быть URL-адрес, который использует синтаксис, относительный ~/apprelativedirectoryот приложения, например.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, использует URL-адрес SiteMapNode объекта в качестве ключа в различных коллекциях, которые поддерживаются классами. 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) метода в производном классе необходимо расширить поиск до любых дочерних поставщиков, SiteMapNode если объект, соответствующий URL-адресу, не найден поставщиком в текущей карте узла, а поставщик не поддерживает дочерние поставщики.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

Объект HttpContext используется для сопоставления сведений об узле с URL-адресом запрошенной страницы.The HttpContext used to match node information with the URL of the requested page.

Возвраты

Объект SiteMapNode, представляющий запрашиваемую в данный момент страницу; в противном случае — значение null, если соответствующий объект SiteMapNode не найден в SiteMapNode или если содержимое страницы имеет значение null.A 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 метод для получения SiteMapNode объекта для текущей запрошенной страницы на основе необработанного URL-адреса или виртуального пути запроса. FindSiteMapNodeThe 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 объект SiteMapне найден в, null возвращается значение.If 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.

Дополнительно

Применяется к