在ASP.NET Core中使用NumberFormat属性

4

ASP.NET Core中的本地化系统发生了相当大的变化。在当前线程中不再可用CurrentCulture

我试图按照这里所解释的方式设置CurrentCultureNumberFormat属性,以便自定义显示货币的格式,但显然不再可能这样做。那么如何设置CurrentCultureNumberFormat属性呢?

在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设置。

1个回答

5
你可以在 Startup.cs 中的 Configure() 方法中添加 UseRequestLocalization 来实现本地化。
    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")));
        });
    }

Result:

RM1,000.50


似乎 app.UseRequestLocalization(new RequestCulture(modified)); 的签名已经改变了。现在需要一个 RequestLocalizationOptions 对象。 - Mike de Klerk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接