我有一个ASP.NET Core 2.1项目,我在其中通过Razor HTML页面呈现一些货币数字。
查看模型
class MyModel
{
public decimal Money { get; set; } = 1.23
}
剃刀页
@model MyModel
<p>@Model.Money.ToString("C")</p>
此项目已部署到Azure App Service。
在Windows App Service计划(和我的本地Windows 10计算机)上,这将产生预期的“ $ 1.23”。但是,如果我将同一项目部署到Linux App Service Plan,它将呈现“¤1.23”。
根据Google:
货币符号(¤)是用于表示未指定货币的字符。
您知道这两个操作系统之间有什么区别吗?我是否需要在Linux上明确设置区域性?
答案 0 :(得分:2)
这是由于linux未配置语言环境引起的。
您可以在程序中设置线程区域性,如下所示:
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>();
}
答案 1 :(得分:0)
您的代码运行哪种文化?我猜天青不了解当前的文化,而是向您展示了通用货币符号。
我建议您使用此功能,其中provider是您的CultureInfo对象。
public string ToString (string format, IFormatProvider provider);