#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, я проверю эту библиотеку