我正在使用Razor制作MVC5应用程序。
我在当前文化中设置了NumberFormat:
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(字符串格式)的情况下呈现千位分隔符?
您可以提供的任何帮助都非常有帮助!
答案 0 :(得分:1)
如您所见,Razor会拨打使用Decimal.ToString()
的"G" general format。
此格式不包含来自msdn:
的千位分隔符结果:最紧凑的定点或科学记数法。 使用
NumberFormatInfo
性能NegativeSign
,NumberDecimalSeparator
和PositiveSign
据我所知,无法以相同的方式替换标准数字格式you can replace整个日期时间ShortDatePattern
和LongDatePattern
。您所能做的就是替换上面提到的NumberFormatInfo
属性,例如NegativeSign
。
但是您仍然可以在Razor中使用其他选项,例如在模型中向属性添加DisplayFormat
属性或为小数创建显示模板。请参阅this question中达林的答案。