在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(字符串格式)的情况下呈现千位分隔符?
你能提供的任何帮助都将非常有帮助!
如您所见,Razor将调用使用"G"通用格式的Decimal.ToString()
。
这个格式不包含分隔符,从msdn:
结果:定点或科学记数法中最紧凑的。使用
NumberFormatInfo
属性NegativeSign
,NumberDecimalSeparator
和PositiveSign
据我所知,不可能用同样的方式替换标准数字格式,你可以替换整个日期时间ShortDatePattern
和LongDatePattern
。你所能做的就是把上面提到的NumberFormatInfo
属性替换成NegativeSign
。
然而,在Razor中您仍然有其他选择,例如在模型中添加DisplayFormat
属性或为小数创建显示模板。