在MVC C#中设置千位分隔符

时间:2015-09-15 16:01:13

标签: c# asp.net-mvc razor formatting

我正在使用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(字符串格式)的情况下呈现千位分隔符?

您可以提供的任何帮助都非常有帮助!

1 个答案:

答案 0 :(得分:1)

如您所见,Razor会拨打使用Decimal.ToString()"G" general format

此格式不包含来自msdn:

的千位分隔符
  

结果:最紧凑的定点或科学记数法。   使用   NumberFormatInfo   性能   NegativeSign,   NumberDecimalSeparator   和   PositiveSign

据我所知,无法以相同的方式替换标准数字格式you can replace整个日期时间ShortDatePatternLongDatePattern。您所能做的就是替换上面提到的NumberFormatInfo属性,例如NegativeSign

但是您仍然可以在Razor中使用其他选项,例如在模型中向属性添加DisplayFormat属性或为小数创建显示模板。请参阅this question中达林的答案。