2011-04-28 69 views
1

我需要知道当前页面是否为EpiServer页面。我需要知道当前页面是否是起始页面,我正在使用以下代码行。如何区分当前页面是否为EPiServer页面

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

这适用于所有EPiServers,但是当我在非EPiServer页面上时,CurrentPage会返回StarPage的值。这意味着我的所有非EPiServer页面都被视为StartPage(当然,在我的if语句中)。

我想到的一个解决方案是首先检查页面是否为EPiServer页面?但不知道如何做到这一点。我可以得到一个页面的课程,或者我怎样才能做到这一点?

任何想法或建议吗?

在此先感谢。

回答

3

您的非EPiServer页面是否只是自定义的aspx页面?如果出现这种情况,您可能会遇到问题,您可以通过检查页面的类型来检查当前页面是否从EPiServer页面继承。我相信所有EPiServer页面都是从PageBase继承的。

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

我刚刚检查过,不幸的是我的非EPiServer页面也从PageBase继承。因此,他们都输入了if语句。任何其他想法如何处理这个?每个页面类型都从不同的类继承,但最终都从PageBase继承。谢谢您的帮助。 – tif 2011-04-28 16:15:59

+1

我找到了解决方案。如果(页面为PageTypeExample1){...} ,并且它工作正常,我会改为 。谢谢您的帮助。 – tif 2011-04-29 07:04:16

0

这不是你得到了布莱恩,但如果你不希望你的非外延的网页钩到一个单独的页面类型我想你最好的选择的真实页例如一件好事,是检查请求.Url或正在处理的ASPX文件的文件名。

+0

我接管了一个现有的项目,这就是他们如何做到的,并且需要做大量的工作来修改您提到的针对我正在尝试实现的小改动的内容,但我会将您的建议用于未来的项目,我调整了Dave的解决方案以适应我的项目,现在它工作正常。只是不确定你在使用Request.Url时意味着什么,我怎样才能将它用于我的差异化页面类型?谢谢 – tif 2011-04-29 07:13:04

0

有一个非常棒的有用代码库,可以让您更轻松地使用EPiServer。

下载EPiCode extensions library并将其添加到您的项目中。

这有一个可以使用的扩展方法IsEPiServerPage。方法来源是:

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

thanx提示@tompipe,我会检查该库 – tif 2011-09-13 18:21:32

相关问题