我有一个.NET应用程序,允许用户选择自己的语言和文化(日期/数字格式)。他们的文化设置存储在Thread.CurrentThread.CurrentCulture
中(也有Thread.CurrentThread.CurrentUICulture
,但这是一个单独的问题)。
当我通过Razor打印变量时,它以本地化格式显示:
<span>@bignum</span> (renders as "123.456" or "123,456")
但是,我也需要将一些.NET变量传递给Javascript:
var js_bignum = @bignum;
问题在于,此时的Javascript无法识别这些数字的本地化版本,因此会出现错误,因为上述语句变成了:
var js_bignum = 123,456;
可能是因为用户浏览器的区域设置与用户web应用程序的区域设置不同。无论如何,这是我们需要能够处理的情况。
那么最简单的处理方式是什么呢?我可以创建自己的Javascript
ConvertToStandardNumberFormat()
,它接收来自.NET的字符串值并返回“标准”数字格式,但这似乎有点像一个技巧。是否有一种方法可以强制.NET / Razor呈现非本地化格式的数字?var js_bignum = @price.ToUnlocalizedFormat(); (Is there something like this?)
我正在尝试找出这种情况的最佳做法。谢谢!
number.ToString(CultureInfo.InvariantCulture)
应该做的事情(当然需要使用正确命名空间的 Razor 语法)。 - millimoose