Как определить, является ли текущая страница страницей 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-файл обрабатывается.