EpiServer: как проверить, существует ли страница?

Есть ли способ изящно проверить, существует ли страница в EpiServer CMS 5 (с заданным целым числом pageId) без перехвата PageNotFoundException, выброшенного

DataFactory.Instance.GetPage(pageReference)

(EpiServer с радостью создаст PageReference, используя несуществующий идентификатор страницы).

Конечно, я могу проверить, существует ли страница, не вызывая исключение или выполняя массивный цикл?


person Lee Englestone    schedule 20.11.2009    source источник


Ответы (3)


[EPiServer CMS 5 R2 SP2] Нет, не без обхода кеша страниц, а это дороже, чем перехват исключения.

person Fredrik Haglund    schedule 24.11.2009
comment
Приветствую Фредерика. Я думал, что нет. - person Lee Englestone; 25.11.2009

Мне приятно делать перехват в методе расширения:

public static bool TryGetPage(this PageReference pageReference, out PageData pd)
{
    try
    {
        pd = DataFactory.Instance.GetPage(pageReference);
        return true;
    }
    catch (Exception)
    {
        pd = null;
        return false;
    }
}
person Johan Kronberg    schedule 10.01.2011
comment
Почему бы не вернуть объект PageData вместо логического значения и позволить исключениям возвращать значение null? - person Eric Herlitz; 06.10.2014
comment
Мне нравится внешний вид кода: PageData pd; if (pageRef.TryGetPage(out pd)) { // использовать pd } Лучше, чем проверка на null. - person Johan Kronberg; 27.10.2014

Существует статический метод PageReference, который должен помочь:

PageReference.IsNullOrEmpty(pageLink)
person Phil Peace    schedule 02.02.2010
comment
PageReference.IsNullOrEmpty() только проверяет, правильно ли построена переданная ссылка на страницу или не является нулевой, а не существует ли актуальная страница или нет. - person Johan Petersson; 12.02.2013