在我正在构建的简单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.###}")]
在相关属性之上。但是,在提交数据时,它仍然以逗号(,
)发送,因此它似乎只会改变它的显示方式。
答案 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解析是 几乎总是在服务器端完成。