EpiServer: Как да проверите дали страницата съществува?

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

DataFactory.Instance.GetPage(pageReference)

(EpiServer с радост ще създаде PageReference, използвайки несъществуващ pageId).

Със сигурност мога да проверя дали дадена страница съществува, без да хвърлям изключение или да правя масивен цикъл?


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 вместо bool и оставите изключенията да се връщат като нула? - person Eric Herlitz; 06.10.2014
comment
Харесва ми вида на кода: PageData pd; if (pageRef.TryGetPage(out pd)) { // use pd } По-добре, отколкото да се налага проверка за нула. - 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