Прочитать на английском

Поделиться через


SiteMapProvider.FindSiteMapNode Метод

Определение

Во время переопределения в производном классе получается объект SiteMapNode, представляющий страницу.

Перегрузки

FindSiteMapNode(String)

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

FindSiteMapNode(HttpContext)

Представляет объект SiteMapNode, представляющий запрашиваемую в настоящий момент страницу с использованием указанного объекта HttpContext.

FindSiteMapNode(String)

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

public abstract System.Web.SiteMapNode FindSiteMapNode (string rawUrl);

Параметры

rawUrl
String

URL-адрес, определяющий страницу, для которой необходимо извлечь SiteMapNode.

Возвращаемое значение

SiteMapNode

Объект SiteMapNode, представляющий страницу, определенную объектом rawURL; в противном случае — значение null, если соответствующий объект SiteMapNode не найден или если фильтрация по ролям безопасности разрешена и объект SiteMapNode не может быть возвращен для текущего пользователя.

Примеры

В следующем примере кода показано, как реализовать FindSiteMapNode метод в классе, который реализует абстрактный SiteMapProvider класс. Использует SimpleTextSiteMapProvider вспомогательный метод с именем FindUrl, чтобы получить URL-адрес отображаемой страницы из HttpContext объекта.

Этот пример кода является частью более крупного примера, предоставленного SiteMapProvider для класса.

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

Комментарии

Классы, производные SiteMapProvider от класса, должны реализовывать абстрактный FindSiteMapNode метод.

Предоставленный URL-адрес может быть виртуальным или абсолютным URL-адресом. Это также может быть URL-адрес, использующий синтаксис, связанный с приложением, например ~/apprelativedirectory. Убедитесь, что любая реализация FindSiteMapNode метода анализирует и правильно обрабатывает синтаксис, связанный с приложением.

КлассXmlSiteMapProvider, который является поставщиком карты сайта по умолчанию для ASP.NET, использует URL-адрес SiteMapNode объекта в качестве ключа в различных коллекциях, которые поддерживаются классами. Таким образом, если SiteMapNode предоставляется URL-адрес, он должен быть уникальным в пределах области поставщика карты сайта. Если URL-адрес не указан, создается уникальный идентификатор для идентификации SiteMapNode.

Примечания для тех, кто реализует этот метод

При переопределении FindSiteMapNode(String) метода в производном классе обязательно расширьте поиск до любых дочерних поставщиков, если SiteMapNode объект, соответствующий URL-адресу, не найден поставщиком на текущей карте сайта и поставщик поддерживает дочерние поставщики.

См. также раздел

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

FindSiteMapNode(HttpContext)

Представляет объект SiteMapNode, представляющий запрашиваемую в настоящий момент страницу с использованием указанного объекта HttpContext.

public virtual System.Web.SiteMapNode FindSiteMapNode (System.Web.HttpContext context);

Параметры

context
HttpContext

Объект HttpContext используется для сопоставления сведений об узле с URL-адресом запрошенной страницы.

Возвращаемое значение

SiteMapNode

Объект SiteMapNode, представляющий запрашиваемую в данный момент страницу; в противном случае — значение null, если соответствующий объект SiteMapNode не найден в SiteMapNode или если содержимое страницы имеет значение null.

Комментарии

Метод FindSiteMapNode вызывает абстрактный FindSiteMapNode метод для получения SiteMapNode объекта для запрашиваемой страницы на основе необработанного URL-адреса или виртуального пути запроса. Если соответствующий SiteMapNode объект не найден в объекте SiteMap, null возвращается.

Метод FindSiteMapNode не проверяет, доступен ли SiteMapNode объект пользователю по умолчанию.

См. также раздел

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