在MVC c#中设置数千分隔符

本文关键字:分隔符 设置 MVC | 更新日期: 2023-09-27 18:12:47

我正在使用Razor制作一个MVC5应用程序。

我设置当前文化中的数字格式如下:

var culture = new System.Globalization.CultureInfo(cultureName);
culture.NumberFormat.NumberGroupSizes = new int[] { 3 };
culture.NumberFormat.NumberGroupSeparator = " ";
culture.NumberFormat.NumberDecimalSeparator = ";";
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;

然后我在我的一个视图中设置了一些属性类型为double,值为1800.01

@MyDecimalValue

得到的是1800;01。我想要得到的是1 800;01。为了包含我所设置的所有参数,我必须使用如下代码:

@MyDecimalValue.ToString("N")

我认为当Razor的引擎将我的Razor代码转换成HTML时,它会调用ToString()方法,该方法会忽略我设置的千位分隔符。

有没有办法使Razor在不调用ToStringMethod(字符串格式)的情况下呈现千位分隔符?

你能提供的任何帮助都将非常有帮助!

在MVC c#中设置数千分隔符

如您所见,Razor将调用使用"G"通用格式的Decimal.ToString()

这个格式不包含分隔符,从msdn:

结果:定点或科学记数法中最紧凑的。使用NumberFormatInfo属性NegativeSign,NumberDecimalSeparatorPositiveSign

据我所知,不可能用同样的方式替换标准数字格式,你可以替换整个日期时间ShortDatePatternLongDatePattern。你所能做的就是把上面提到的NumberFormatInfo属性替换成NegativeSign

然而,在Razor中您仍然有其他选择,例如在模型中添加DisplayFormat属性或为小数创建显示模板