2010-03-22 99 views
11

基本問題 - 是否可以從ASP.NET中的靜態類訪問當前的Page從靜態類訪問頁面的當前實例

我在想沒有,因爲谷歌沒有結果。

+0

相關問題:https://stackoverflow.com/q/58123/1475331。 – 2017-06-10 12:03:46

回答

25

從技術上講,您可以獲取當前IHttpHandler的請求。由於Page實現,那麼你可以檢查,看看它是否是一個。

var page = HttpContext.Current.CurrentHandler as Page; 

if(page != null){ 
    // Do something with page 
} 
7

您可以使用HttpContext.CurrentHandler爲請求返回當前的HttpHandler。 Page類只是一種複雜類型的HttpHandler。

爲了訪問與頁面屬性相關的任何內容,您需要將結果轉換爲Page。老實說,如果可能的話,我會採用Jeff的方法,因爲通過在方法調用中注入頁面引用,您的方法更加可測試(更不用說可靠了,因爲您可以直接使用Page)。依賴與HttpContext有關的任何事情往往會讓你的代碼無法測試。也許你處於一種無法設計這種方法的情況,但這將是我更喜歡這樣做的方式。

+0

同意,我強烈懷疑httpcontext是一個混亂的線程以及。 – maxp 2010-03-22 20:07:20

2

最簡單的方法是將當前頁面作爲參數傳遞給您在靜態類中調用的方法。

+0

是的,可能'最乾淨',恥辱它的埋葬約5方法調用深... – maxp 2010-03-22 19:53:29

+0

Yu!那麼HttpContext.Current就是這樣,除非你有機會重構。 – 2010-03-22 19:55:22