C# 为什么自定义十进制格式化程序显示  而不是视图中的逗号
我正在尝试编写一个可以在视图中使用的十进制格式化程序扩展。由于某些原因,我没有得到所需的结果 我最初的扩展如下所示:C# 为什么自定义十进制格式化程序显示  而不是视图中的逗号,c#,asp.net,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,我正在尝试编写一个可以在视图中使用的十进制格式化程序扩展。由于某些原因,我没有得到所需的结果 我最初的扩展如下所示: public static string FormatCurrency(this decimal instance) { return string.Format("{0:c}", instance); } public static string FormatCurrency(this decimal instance) { return string.F
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);
}
<td>10 000.00</td>
@(Model.SpouseGrossSalary == null ? "N/A" : ((decimal)Model.SpouseGrossSalary).FormatCurrency())
我发现并不是所有的服务器都配置为南非,有些服务器仍然默认为美国。因此货币符号不会总是正确显示
我不关心货币符号,如果它不显示,我可以。我将格式化程序更改为如下所示:
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);
}
<td>10 000.00</td>
@(Model.SpouseGrossSalary == null ? "N/A" : ((decimal)Model.SpouseGrossSalary).FormatCurrency())
我所需要的就是,如果我的值是100000000,那么它需要显示为100000.00,如果我有10000,那么它需要显示为10000.00。目前为10000.00。当我查看HTML时,它如下所示:
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);
}
<td>10 000.00</td>
@(Model.SpouseGrossSalary == null ? "N/A" : ((decimal)Model.SpouseGrossSalary).FormatCurrency())
您可以指定所需的格式:
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);
}
}
至于
和#160就代码>符号而言,这是因为该值是HTML编码的,并且应该是这样的。它将正确显示在浏览器中。谢谢。我将如何完成我的第二个扩展方法,不使用文化信息,并将其格式化为10000,没有小数点,就像我原来的帖子一样?请更新您的答案好吗?请查看我关于使用NumberFormatInfo
而不是特定区域性的更新答案。