1

CurrentCulture了解每个登录用户并根据该文化为每个用户进行一些设置的最佳地点是什么?

我可以使用静态构造函数来分配静态属性!

我可以做这样的事情吗!!

 public class MetricSystemHelper
{
    private static bool _isMetric;
    static MetricSystemHelper()
    {
        RegionInfo region = new RegionInfo(System.Threading.Thread.CurrentThread.CurrentCulture.Name);

        if (true == region.IsMetric)
        {
            _isMetric = true;
        }
        else //  USA, Liberia, Myanmar(Only these countries doesn't use metric)
        {
            _isMetric = false;
        };
    }


    public static bool IsMetric
    {
        get
        {
             return _isMetric;
        }
    }
4

1 回答 1

2

您可以使用该Thread.CurrentThread.CurrentCulture属性来检索当前 ASP.NET 用户的文化信息。如果您需要保留此信息,您可以在用户登录时将其存储在数据库中。但是您应该知道,在 ASP.NET 应用程序中,此属性是从<globalization>您的 web.config 文件中的元素填充的。

例如:

<globalization culture="auto" uiCulture="auto" />

auto是默认值。然后 ASP.NET 将使用Accept-LanguageHTTP 请求标头来填充此属性。此属性通常由客户端浏览器在每次请求时发送。但请注意以下问题:同一用户可能有 2 个浏览器(例如 Google Chrome 和 Mozilla Firefox),并且他可能在这些浏览器中配置了不同的文化设置。因此,当他访问您的网站时,您可能会为同一用户获得不同的结果。

另一方面,如果您想以与浏览器无关的方式管理用户的语言或文化偏好,您应该为用户提供告诉您他的偏好的可能性。例如,这可能是您网站中用户可以修改的设置,您可以将其存储在数据库中。

于 2013-01-02T11:43:40.493 回答