Как определить, является ли текущая страница страницей EPiServer или нет

Мне нужно знать, является ли текущая страница страницей EpiServer или нет. Мне нужно знать, является ли текущая страница стартовой, я использую следующую строку кода.

if(PageReference.StartPage.ID == CurrentPage.PageLink.ID)

Это прекрасно работает на всех EPiServer, но когда я нахожусь на странице, не относящейся к EPiServer, то CurrentPage возвращает значения для StarPage. Это означает, что все мои страницы, не относящиеся к EPiServer, обрабатываются как StartPage (только в моем заявлении if, конечно).

Одно из решений, о котором я подумал, - это сначала проверить, является ли страница страницей EPiServer? Но не знаю, как это сделать. Могу ли я получить класс для страницы или как этого добиться?

Есть идеи или предложения?

Заранее спасибо.

3 ответа

Решение

Ваши страницы не-EPiServer - просто пользовательские страницы aspx? В этом случае у вас есть проблемы, вы можете проверить, наследует ли текущая страница страницу EPiServer, проверив тип страницы. Я считаю, что все страницы EPiServer наследуются от PageBase.

if (Page is EPiServer.PageBase) {...}

Существует фантастическая библиотека полезного кода, облегчающая работу с EPiServer.

Загрузите библиотеку расширений EPiCode и добавьте ее в свой проект.

Это имеет метод расширения IsEPiServerPage, который можно использовать. Источник метода:

    public static bool IsEPiServerPage(this PageData page)
    {
        return page != null && page.PageLink != null && page.PageLink.ID > 0;
    }

Это не очень хорошая вещь, которую ты получаешь, но если ты не хочешь подключать свои не EPi-страницы к реальному экземпляру страницы отдельного типа страницы, я думаю, тебе лучше всего проверить Request.Url или имя файла ASPX-файл обрабатывается.

Другие вопросы по тегам