2013-02-20 37 views
9

有什麼區別? 我想在我的應用程序中實現語言下拉選擇。所以當選擇一種選定的語言時,線程文化將被設置並且頁面重新加載。global.asax Application_AcquireRequestState與Application_BeginRequest

像這樣:

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US"); 

應該在哪裏像上面的設置進行處理? Application_AcquireRequestState或Application_BeginRequest?

感謝

+0

如何在用戶設置後檢索文化數據? – ZippyV 2013-02-20 12:59:58

+0

我會從cookie中讀取它。所以「en-US」將被從cookie中取出 – ShaneKm 2013-02-20 16:27:44

回答

16

這取決於你正在保存跨請求您的語言的方式。如果您正在使用會話來保存所選語言,則應使用Application_AcquireRequestState,因爲由於Application_BeginRequest之前的在生命週期中,此時會話狀態對象尚未可用

+0

很好的答案。所以你可以說(簡化):文化在會話中 - > Application_AcquireRequestState /文化在Cookie中 - > Application_BeginRequest。 – isepise 2017-12-11 08:59:43

+0

但是Controller.BeginExecuteCore(我在ASP.NET MVC 5項目中有一個BaseController)呢?我用它來設置我的文化(保存在cookie中) – isepise 2017-12-11 09:05:58

+0

只是一種直覺,但對我來說,使用「核心」的東西聽起來很奇怪。另一個答案中的鏈接描述了整個生命週期,我確定這裏包含了足夠的鉤子。 – Jan 2017-12-11 12:53:26

相關問題