【问题标题】:How to differentiate if the current page is an EPiServer Page or not如何区分当前页面是否为 EPiServer 页面
【发布时间】:2011-08-14 19:08:42
【问题描述】:

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

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

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

我想到的一个解决方案是首先检查该页面是否为 EPiServer 页面?但不知道如何做到这一点。我可以获取页面的类吗?或者我该如何实现?

有什么想法或建议吗?

提前致谢。

【问题讨论】:

    标签: episerver current-page


    【解决方案1】:

    有一个很棒的有用代码库可以让 EPiServer 的使用变得更容易。

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

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

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

    【讨论】:

    • 感谢@tompipe 的提示,我会检查那个库
    【解决方案2】:

    这不是一件好事,但如果你不想将非 EPi 页面连接到单独页面类型的真实页面实例,我想你最好的选择是检查 Request.Url 或正在处理的 ASPX 文件的文件名。

    【讨论】:

    • 我接手了一个现有项目,他们就是这样做的,要修改你提到的我想要实现的小改变需要做很多工作,但我会接受你对未来项目的建议,我调整了 Dave 的解决方案以适合我的项目,现在它运行良好。只是不确定您在使用 Request.Url 时的意思,如何使用它来区分页面类型?谢谢
    【解决方案3】:

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

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

    【讨论】:

    • 我刚刚检查过了,不幸的是我的非 EPiServer 页面也继承自 PageBase。因此他们都进入了 if 语句。关于如何处理这个问题的任何其他想法?每种页面类型都继承自不同的类,但最终都继承自 PageBase。感谢您的帮助。
    • 我找到了解决方案。我改为 if(Page is PageTypeExample1) {...} 并且它工作正常。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 2019-07-09
    • 2018-05-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    相关资源
    最近更新 更多