2

The localization system has changed quite a bit in ASP.NET CoreCurrentCulture在當前線程中不再可用。在ASP.NET Core中使用NumberFormat屬性

我試圖設置NumberFormat屬性CurrentCulturehere,爲了定製顯示金錢的格式,但顯然這是不可能的。那麼如何爲CurrentCulture設置NumberFormat屬性?

是用來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

可以在Startup.cs添加UseRequestLocalizationConfigure()方法:

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'對象。 –

相關問題