c# - decimal.ToString ("C") 在 Linux 上生成 ¤ 货币符号

标签 c# asp.net-core razor .net-core

我有一个 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/

相关文章:

c# - 调试和跟踪 Write/WriteLine 未输出到 Visual Studio 2010 C# Express 中的输出

c# - .NET 正则表达式,只有数字,没有空格

c# - 如何安全干净地重写关键/生产代码?

razor - 编辑和保存复杂对象

html - 为什么 Razor 语法会破坏 css 样式?

asp.net-mvc-3 - Razor 布局如何获取使用它的 View 的名称?

c# - div 中的滚动位置与母版页

c# - ASP.NET Core WebAPI 最多可以同时处理多少个请求?

c# - 基于 Accept header 的 ASP.NET Core Web API 操作选择

c# - 以 XmlDocument 作为返回类型的 Web 方法在 asp.net core 的 SoapCore 中失败