根据用户配置文件将区域设置应用于应用程序

时间:2013-07-31 14:05:44

标签: asp.net-mvc-4 timezone cultureinfo

我有一个与国际用户(世界各地)的MVC 4应用程序。我想添加一个名为配置文件设置的新页面,用户可以在其中选择区域设置,我的意思是他们应该能够选择:

  - time zone      (UTC +- .....)
  - date format    (dd.MM.yyyy or dd/MM/yyyy or MM/dd/yyyy ....)
  - time format    (12/24 - AM PM)
  - number format  (1234.56 or 1234,56)

用户选择区域设置后,所有特定数据(日期,时间,数字......)都应以该特定格式显示。

任何建议如何使这项工作?

1 个答案:

答案 0 :(得分:0)

大多数情况下,您不应该向用户公开文化格式的每个细节。相反,请提供您要支持的文化下拉列表。使用代码指定文化。一些常用代码是en-US(英语/美国),es-MX(西班牙语/墨西哥语)和de-DE(德语/德语)。第一部分涉及语言,第二部分涉及特定国家或地区。

获得所选的文化代码后,您可以将其应用于每个用户,例如:

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

如果您使用的是特定于文化的资源文件,那么您还需要:

Thread.CurrentThread.CurrentUICulture = culture;

您可以在多个地方执行此操作,但常见位置位于global.asax文件的Application_BeginRequest事件中。

MSDN上有一个很好的教程here

虽然在考虑区域设置时考虑时区是很常见的,但它们实际上是完全不同的东西,应该单独考虑。时区不能真正全局设置,您需要考虑它们如何影响您使用日期和时间的每个地方的应用程序逻辑。您应该查看TimeZoneInfo课程。如果您有任何疑问,请单独询问。虽然如果你搜索,你可能会发现许多人已经得到了答案。