我正在尝试编写一个十进制格式化程序扩展,我可以在我的视图中使用它。由于某些原因或其他原因,我没有得到所需的结果。
我的初始扩展名如下:
public static string FormatCurrency(this decimal instance)
{
return string.Format("{0:c}", instance);
}
我发现并非所有服务器都配置为南非,有些仍默认为美国。因此货币符号不会始终正确显示。
我不关心货币符号,如果没有显示,我没关系。我将格式化程序更改为:
public static string FormatCurrency(this decimal instance)
{
return string.Format("{0:0.00}", instance);
}
我需要的只是如果我的值为100000000,那么它需要显示为100,000,000.00,如果我有10000,那么它需要显示为10,000.00。目前它的价格为10 000.00。当我查看HTML时,它看起来像这样:
<td>10 000.00</td>
在我看来,我这样使用它:
@(Model.SpouseGrossSalary == null ? "N/A" : ((decimal)Model.SpouseGrossSalary).FormatCurrency())
答案 0 :(得分:0)
您可以指定所需的格式:
public static class DecimalExtensions
{
public static string FormatCurrency(this decimal instance)
{
var format = new NumberFormatInfo
{
NumberGroupSeparator = ",",
NumberDecimalDigits = 2,
NumberDecimalSeparator = "."
};
return string.Format(format, "{0:N}", instance);
}
}
或使用货币:
public static class DecimalExtensions
{
public static string FormatCurrency(this decimal instance)
{
var format = new NumberFormatInfo
{
CurrencyGroupSeparator = ",",
CurrencyDecimalDigits = 2,
CurrencyDecimalSeparator = ".",
CurrencySymbol = "R"
};
return string.Format(format, "{0:C}", instance);
}
}
就 
符号而言,这是因为该值是HTML编码的,它应该是如何编码的。它将在浏览器中正确显示。