2011-12-13 45 views
4

我的應用程序的每個用戶都將選擇他們的國家,之後它將被存儲在cookie中並存儲用於以後的請求。一切正常,但我需要在會議開始時設置文化。我目前正在嘗試將web.config中的文化設置爲en-GB,然後使用Global.asax將會話文化覆蓋到en-US。下面的代碼爲會話設置文化

protected void Session_Start(object sender, EventArgs e) 
    { 
     if (Globals.CountryID == 8) 
     { 
      Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US"); 
      Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-US"); 
     } 
    } 

countryID是8,並在以下代碼中將文化設置爲en-US。但是,當我導航到設置了ToString(「C」)的頁面時,它仍然以英鎊顯示,文化仍然是en-GB。

有什麼建議嗎?

回答

8

您假設將爲頁面請求提供服務的線程與您的代碼中啓動會話的線程相同 - 這是不能保證的。

您可能希望將文化保存在Session變量中,並在頁面中使用覆蓋InitializeCulture,如How to: Set the Culture and UI Culture for ASP.NET Web Page Globalization中所述。

+0

因此,我需要在每個頁面上執行此操作,或爲每個其他頁面創建一個基頁以從中繼承?該死,我的申請超過700頁。 – Paul

+0

@保羅 - 是的,那些是你的選擇。基本頁面可能是最好的選擇。 – Oded

+0

好的,謝謝你的信息。 – Paul

1

您必須在每次調用時設置文化,Session_Start僅在創建會話時觸發。所以你的文化只有在第一次通話或會議重新創建時纔是正確的。