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

#episerver #current-page

#episerver #текущая страница

Вопрос:

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

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

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

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

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

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

Ответ №1:

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

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

Комментарии:

1. Я только что проверил это, и, к сожалению, мои страницы, не относящиеся к EPiServer, также наследуются от PageBase. Для этого они оба вводят оператор if. Есть другие идеи о том, как с этим справиться? Каждый тип страницы наследуется от другого класса, но в конце оба наследуются от PageBase. Спасибо за помощь.

2. Я нашел решение. Вместо этого я делаю if (Страница — PageTypeExample1) {…}, и это работает нормально. Спасибо за помощь.

Ответ №2:

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

Комментарии:

1. Я взял на себя существующий проект, и вот как они это сделали, и было бы много работы, чтобы изменить то, что вы упомянули, для небольшого изменения, которого я пытаюсь достичь, но я следую вашему совету для будущих проектов, я настроил решение Дейва, чтобы оно соответствовало моему проекту, и теперь оно работает нормально. Просто не уверен, что вы имели в виду при использовании Request. URL, как я могу использовать это для различения типов страниц? Спасибо

Ответ №3:

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

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

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

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

Комментарии:

1. спасибо за подсказку @tompipe, я проверю эту библиотеку