【问题标题】:Safari displays decimal with commaSafari 用逗号显示十进制
【发布时间】:2017-06-07 12:43:04
【问题描述】:

我在构建一个简单的 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.###}")]

上面有问题的属性。但是,在提交数据时,它仍然是用逗号(,)发送的,所以看起来这只改变了它的显示方式。

【问题讨论】:

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


    【解决方案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 解析是 几乎总是在服务器端完成。

    【讨论】:

    • 感谢您的回答,但我不知道这是什么意思。我现在需要设置第二台服务器并从那里运行服务吗?这似乎完全荒谬。我不能在 Safari 本身中更改这个 navigator.language 吗?
    猜你喜欢
    • 2017-10-06
    • 1970-01-01
    • 2011-08-12
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多