Double ToString(" C")特定的文化

时间:2015-04-14 08:40:59

标签: c# asp.net cultureinfo

我知道这有效(source):

double x = 9.7;
x.ToString("C", CultureInfo.CreateSpecificCulture("nl-NL"));

但我的代码背后有这个代码:

System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-GB");

在我的aspx webform中,我想使用double.tostring("C")所以没有cultureinfo。因为它是在当前线程上设置的。但是本地机器是nl-NL。在后面的代码中,CurrentThread被设置为en-GB,但是valutasign仍然是欧元符号而不是英镑。

我错过了什么吗?或者使用tostring的重载与cultureinfo需要?换句话说,我是否必须重写所有双重tostrings才能使用cultureinfo?

1 个答案:

答案 0 :(得分:1)

确保在页面生命周期中尽快初始化文化。实际上,甚至还有一种方法可以专门为此目的覆盖:Page.InitializeCulture

基于cookie的示例:

    protected override void InitializeCulture()
    {
        var cookie = Request.Cookies[WebConfigurationManager.AppSettings["LocaleCookieName"]];
        if (cookie != null)
            Culture = UICulture = cookie.Value;
    }

无需调用基本方法,请参阅文档以获取更多信息。