2011-04-28 91 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

相關問題