Использование свойства NumberFormat в ASP.NET Core
Система локализации немного изменилась в ASP.NET Core. CurrentCulture
больше не доступен в текущей теме.
Я пытаюсь установить NumberFormat
собственностью CurrentCulture
как объяснялось здесь, для того, чтобы настроить формат отображения денег, но, очевидно, это уже невозможно. Так как же установить 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
настройки, которые будут применены.
1 ответ
Решение
Можете добавить 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