2

The localization system has changed quite a bit in ASP.NET Core. CurrentCulture больше не доступен в текущей теме.Использование свойства NumberFormat в ASP.NET Core

Я пытаюсь установить NumberFormat свойство CurrentCulture как объяснено here для того, чтобы настроить формат отображения денег, но, очевидно, это уже не возможно, что путь. Итак, как установить NumberFormat на CurrentCulture?

Код, который используется для работы это до 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

Вы можете добавить UseRequestLocalization методу Configure() в Startup.cs:

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

+0

кажется подпись 'app.UseRequestLocalization (новый RequestCulture (модифицированный));' изменилось. Теперь он хочет объект RequestLocalizationOptions. –

Смежные вопросы