我有一个 ASP.NET Core 2.1 项目,我正在通过 Razor HTML 页面呈现一些货币数字。
查看型号
class MyModel
{
public decimal Money { get; set; } = 1.23
}
Razor 专页
@model MyModel
<p>@Model.Money.ToString("C")</p>
此项目部署到 Azure 应用服务。
在 Windows 应用服务计划(和我的本地 Windows 10 机器)上,这会按预期产生“1.23 美元”。但是,如果我将同一个项目部署到 Linux 应用服务计划,它会呈现“¤1.23”。
根据谷歌的说法:
The currency sign (¤) is a character used to denote an unspecified currency.
知道这两个操作系统之间有什么区别吗?我是否需要在 Linux 上明确设置文化或其他内容?
最佳答案
这是由于linux没有配置locale造成的。
您可以在程序中设置线程文化,如下所示:
public class Program
{
public static void Main(string[] args)
{
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("en-US");
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
关于c# - decimal.ToString ("C") 在 Linux 上生成 ¤ 货币符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56993596/