为什么.NET Core MVC中的控制器和视图中的Culture Info不同

时间:2017-04-03 11:43:29

标签: c# .net asp.net-mvc asp.net-core

我认为.Net Core的社区和有关本地化的文档很差。这就是为什么我有一些问题。

当我在Controller中更改“文化信息”(参见下面的代码)工作正常时,但在此之后我查看“文化信息”在视图中是不同的。请帮我解决这个问题。

System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo('en-GB');

System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture; 

2 个答案:

答案 0 :(得分:1)

为什么?

因为dotnet核心更关注异步编码意味着每个部分都运行任务。因此控制器动作是1个任务。创建/执行视图是另一项任务(或多项任务)。

任务在不同的线程中运行(由TaskSchedular)使用池(在任务完成时重用线程)。因此,没有任何保证它在同一个线程中运行。

如何处理文化?

查看文档:{​​{3}}。它们提供了完美的工作原理。 (他们告诉您使用:CultureInfo.CurrentCulture但请阅读文档。

答案 1 :(得分:0)

您可能想要检查此属性:

var cultureInfo = new System.Globalization.CultureInfo('en-GB');
Thread.CurrentThread.CurrentCulture = cultureInfo;
Thread.CurrentThread.CurrentUICulture = cultureInfo;
CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;