c# - 在 ASP.NET Core 中使用 NumberFormat 属性

标签 c# asp.net-core tostring .net-core asp.net-core-localization

The localization system has changed quite a bit in ASP.NET Core . CurrentCulture 在当前线程中不再可用。

我正在尝试按照说明设置 CurrentCultureNumberFormat 属性 here ,以便自定义显示货币的格式,但显然不再可能那样了。那么如何为 CurrentCulture 设置 NumberFormat 属性呢?

在 asp.net core 之前用于此的代码:

CurrentCulture modified = new CultureInfo(Thread.CurrentThread.CurrentCulture.Name);
Thread.CurrentThread.CurrentCulture = modified;
var numberFormat = modified.NumberFormat;
numberFormat.CurrencySymbol = "RM";
numberFormat.CurrencyDecimalDigits = 2;
numberFormat.CurrencyDecimalSeparator = ".";
numberFormat.CurrencyGroupSeparator = ",";

然后例如在我的代码中我想做的某处:

string fMoney;
fMoney = money.ToString("C");
return fMoney;

并期望应用 numberFormat 设置。

最佳答案

您可以将 UseRequestLocalization 添加到 Startup.cs 中的 Configure() 方法:

    public void Configure(IApplicationBuilder app)
    {
        app.UseIISPlatformHandler();
        app.UseRequestLocalization(new RequestCulture(new CultureInfo("es")));
        app.Run(async (context) =>
        {
            context.Response.ContentType = "text/html";
            await context.Response.WriteAsync(HtmlEncoder.Default.HtmlEncode(1000.5f.ToString("C")));
        });
    }

结果:

1.000,50 €

此外,更重要的是原始问题:

    public void Configure(IApplicationBuilder app)
    {
        app.UseIISPlatformHandler();

        var modified = new CultureInfo(CultureInfo.DefaultThreadCurrentCulture.DisplayName);
        modified.NumberFormat.CurrencySymbol = "RM";
        modified.NumberFormat.CurrencyDecimalDigits = 2;
        modified.NumberFormat.CurrencyDecimalSeparator = ".";
        modified.NumberFormat.CurrencyGroupSeparator = ",";

        app.UseRequestLocalization(new RequestCulture(modified));
        app.Run(async (context) =>
        {
            context.Response.ContentType = "text/html";
            await context.Response.WriteAsync(HtmlEncoder.Default.HtmlEncode(1000.5f.ToString("C")));
        });
    }

结果:

RM1,000.50

关于c# - 在 ASP.NET Core 中使用 NumberFormat 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36768949/

相关文章:

c# - 检查代码分析的变量类型

msbuild - 在 ASP.NET 5 的 Visual Studio Online 构建期间未定义或导入预定义类型 'System.Void'

asp.net-web-api - 无法运行 Swagger UI

c# - 最有效的 Dictionary<K,V>.ToString() 格式?

java - 重写 Java 中的 toString 方法

c# - C#中如何自定义Resharper的 "code clean up"改变文档头规则

时间:2019-03-17 标签:c#opennetcfRegistryHelper.SaveHiveBasedKey

asp.net - 在 ASP.NET 5/Core 1.0 开发期间使用完整的 IIS

java - 如何 toString() 像这样的列表 : List<Option>?

C# MongoDb 驱动问题 Update Failing