2011-11-06 36 views
1

我對此設置的CultureInfo按鈕Main.Master頁面,並將其存儲在會話:如何獲取會話信息或當前文化信息在非頁面後面的包裝類?

protected void RU_Click(object sender, ImageClickEventArgs e) 
{ 
    Session["MyCulture"] = CultureInfo.CreateSpecificCulture("ru-Ru"); 
    Server.Transfer(Request.Url.LocalPath);  
} 

protected void USA_Click(object sender, ImageClickEventArgs e) 
{ 
    Session["MyCulture"] = CultureInfo.CreateSpecificCulture("en-AU"); 
    Server.Transfer(Request.Url.LocalPath); 
} 

我寫我非頁面背後的包裝類,並在這個類我需要從會議上得到這個文化。我嘗試在這個班上獲得像這樣的當前文化信息:

(CultureInfo)HttpContext.Current.Session["MyCulture"] 

但是HttpContext.Current是NULL!這怎麼解決?

+0

這個代碼是小..... PLZ更explain.it不possiable – ashkufaraz

+0

這哪裏是「背後的包裝類非頁」? – Oded

+0

我有我的帶班的解決方案創建一個C#類庫文件(.dll)(.NET Framework 3.5的)項目。在一個班級中,我嘗試獲取當前的文化信息。我怎麼能得到它? –

回答

1

如果您的類未從頁面或用戶控件繼承,那麼你或許應該通過當前上下文作爲參數傳遞給需要使用它的方法。

另外,如果你的類是一個ASHX頁面,那麼你就需要指出的頁面實現System.Web.SessionState.IRequiresSessionState

+3

並不完全正確,但它不會傷害 – sq33G

+0

好一點。我已經更新了答案,表明這是你應該做的事情(所以這個類沒有對它被執行的上下文做任何假設)。 –

+0

+1 – sq33G

1

我假定它訪問HttpContent.Current代碼上的spearate線程到ASP.NET線程中運行。

如果是這種情況,那麼HttpContent.Current將不可用,因此將任何依賴對象(如當前文化)傳遞到新線程可能更好,而不是依賴訪問當前HttpContext對象。