2013-02-20 59 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