在我目前的應用程序中,我想用全局資源實現ASP.Net本地化。我遇到這樣的問題,即在更改CurrentThread.CurrentUICulture和CurrentThread.CurrentCulture並更改爲另一個頁面後,這些值將被瀏覽器默認值覆蓋。如何防止Thread.CurrentThread.CurrentCulture在手動設置之後切換到默認瀏覽器值?
我有一個DropDownList,可以選擇不同的語言。在ItemChanged事件中,我存儲在會話中culturename,重定向到我defaultpage並使用此代碼
protected override void InitializeCulture()
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("de-DE");
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
base.InitializeCulture();
}
切換到另一個contentpage,不替換InitializeCulture我回到默認瀏覽器語言後。我怎樣才能使這種持久?
我有什麼選擇?下面來我的腦海:
- 在每一個* .aspx頁面中我做執行InitializeCulture
- 我創建一個從System.Web.UI.Page派生並覆蓋InitializeCulture事件處理程序的新類。我使用的每個* .aspx頁面都來自它。
難道沒有更「內置」的方式嗎? ASP.net提供了很好的本地化支持,所以我想必須有一種更簡單/更有效的方式來實現我的目標。哪一個在那裏?
我決定創建一個從System.Web.UI.Page派生的新類並在其中重寫InitializeCulture。每個內容頁面都來自該類。 – citronas 2010-08-26 12:38:42
無論如何總是使用基本頁面是一個好習慣。然後,您可以重寫像這樣的基本方法,而無需觸及每個類文件只是爲了更改它繼承的內容。 – Chris 2010-08-26 16:47:29