4

ローカリゼーション システムは、ASP.NET Core でかなり変更されました。はCurrentCulture現在のスレッドでは使用できなくなりました。

お金を表示するためのフォーマットをカスタマイズするために、 hereで説明されているようにNumberFormatプロパティを設定しようとしていますが、明らかにそのようにすることはできなくなりました。では、プロパティをどのように設定しますか?CurrentCultureNumberFormatCurrentCulture

asp.netコアの前にこれのために機能していたコード:

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設定が適用されることを期待します。

4

1 に答える 1

5

Startup.csUseRequestLocalizationConfigure()メソッドに追加できます。

    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 €</p>

また、元の質問の要点をさらに詳しく説明します。

    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

于 2016-04-21T19:46:39.703 に答える