Safari使用逗号显示小数

时间:2017-06-07 12:43:04

标签: asp.net-mvc ipad safari formatting culture

在我正在构建的简单Web应用程序中,我遇到了一个非常令人沮丧的问题。

它在chrome和firefox中运行良好,但是当在ipad上使用Safari中的应用程序(它将在现场使用)时,数据格式不正确。

例如,检索到的数据肯定使用点(.)作为小数分隔符,并在firefox / chrome中显示。

但是,在safari中查看数据时,它显示为逗号(,),这会弄乱我的数据库插入。

我尝试将我的地区和语言改为英国但没有效果。

这就是我显示一个有问题的小数的方法:

@Html.LabelFor(model => model.MassOff, new { @class = "viewFieldLabel" }) <br />
@Html.DisplayFor(model => model.MassOff)

但更糟糕的是,因为我还在WebGrid中的其他位置显示小数,它会根据类属性自动填充自身,因此我从未明确告诉它显示小数。但是,它仍然以WebGrid中的逗号显示,所以我不知道我将如何更改...

为什么safari会自动执行此操作,当时我没有要求它转换任何格式?我现在是否必须手动尝试找到所有这些值并使用JQuery更改它们(这看起来非常荒谬),或者是否有一些设置我可以更改我需要包含在我的代码中的ipad或属性?

更新

我设法用

来修正小数的显示方式
[DisplayFormat(DataFormatString = "{0:0.###}")]

在相关属性之上。但是,在提交数据时,它仍然以逗号(,)发送,因此它似乎只会改变它的显示方式。

1 个答案:

答案 0 :(得分:1)

您的Safari和其他浏览器似乎有不同的navigator.language。

请参阅此主题: Best way to determine user's locale within browser

  

如果你可以在网络上的其他地方放置服务器端脚本    只需读取Accept-Language标头并将其吐出即可    带有标题值的JavaScript文件,例如:

var acceptLanguage= 'en-gb,en;q=0.7,de;q=0.3;
     

然后你可以在HTML中包含指向该外部服务,并使用    用于解析语言标头的JavaScript。我不知道有任何现有的    但是,要实现这一点的库代码,因为Accept-Language解析是    几乎总是在服务器端完成。