【问题标题】:Current culture - display euro symbol (€) instead of EUR string当前文化 - 显示欧元符号 (€) 而不是 EUR 字符串
【发布时间】:2017-09-11 12:20:04
【问题描述】:

当前文化设置为“sk-SK”(斯洛伐克货币 - 欧元)我想在 Razor 中使用 Price.ToString("c") 将价格显示为货币时显示欧元符号 (€) 而不是“EUR”字符串。

当我将当前文化更改为例如德语(“de-DE”)时,会显示欧元符号 (€)。

我想在显示带有斯洛伐克文化的价格时也显示欧元符号(不是“EUR”字符串)。

我认为这取决于操作系统(我们的操作系统是 Windows Server 2012),但更改本文建议的默认货币:https://www.howtogeek.com/240216/how-to-change-windows-default-currency-from-dollars-to-euros/(在我们的例子中从欧元更改为欧元)不会改变货币符号的显示方式。如何将货币显示为 € 而不是 EUR?

【问题讨论】:

  • sk-SK 语言环境中change currency symbol 有什么问题?它有二传手。
  • 写入剃须刀代码有什么问题? (例如:@Html.Label("Something")€

标签: c# razor currency culture


【解决方案1】:
CultureInfo ci = new CultureInfo("sk-SK");
ci.NumberFormat.CurrencySymbol = "€";
CultureInfo.DefaultThreadCurrentCulture = ci;
double Price = 10.0;
Console.WriteLine(Price.ToString("c"));

这会产生输出

10,00 欧元

另一种可能性是将文化信息作为IFormatProviderToString() 中传递:

Console.WriteLine(Price.ToString("c",ci));

【讨论】:

  • 这为我提供了£10.00。你在哪里使用ci
  • 我想避免在代码中明确设置货币符号。这是一个更大的项目,我不想进行这样的更改,这将使它容易在未来出现错误(例如,如果货币改变了)。我从 Windows Server 2008 迁移了这个网站,其中 Price.ToString("c")sk-SK 区域设置显示带有欧元符号的价格。如果我没有找到其他解决方案,我会将您的回复标记为答案。谢谢
  • @SeM:你说得对,我忘记了代码中的一行。永远不要真正将ci 设置为CultureInfo
  • @waka 或者你可以在 ToString() 方法中添加它 - ... Console.WriteLine(Price.ToString("c", ci));
  • 但无论如何,它为我返回10,00 ?
猜你喜欢
  • 1970-01-01
  • 2014-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-03
相关资源
最近更新 更多