2011-06-18 43 views
2

我有一个显示数字的ASP.net MVC网站。我可以以某种方式确定用户的计算机是否配置为使用逗号或点作为小数点分隔符?如何确定ASP中的小数点分隔符MVC

我可以在Request.UserLanguages中检查不同的语言,但对于确定小数点分隔符来说不太准确。

回答

2

你可以看到here如何从浏览器语言CultureInfo - 这将让你 一个CultureInfo对象,你可以使用这样的:

var sep = browserCulture.NumberFormat.NumberDecimalSeparator; 

CultureInfoNumberFormatInfo

+0

谢谢 - 这与我所需要的非常接近,但由于小数分隔符不一定与语言一致,因此它不适用于任何情况。 – Preli

1

MVC在处理小数值时存在问题。

Haack对此有一个很好的post。它向你展示了如何克服这一点。

0

由于您询问最终用户的计算机,答案是否定的。不幸的是,网络浏览器不会给你这样的信息。您可以获得的所有内容都是用户的首选语言,但它是通过HTTP Accept-Language标头发送到服务器的浏览器设置。而已。
如果你认为如果JavaScript会给你的话,答案是不会的。它运行在沙箱中,因此它无法访问操作系统。
我不确定Flash是否可以访问此类信息(可能),但可能会被最终用户阻止。对于ActiveX控件也是如此,再加上它不是跨平台的。

因此,坚持从网页浏览器检测到的文化和相应的格式编号,它只是更容易(虽然它不会支持最终用户修改操作系统设置)。

+0

谢谢。我假设你的答案是“最正确的答案”。但是由于Oded的回答非常接近我所需要的,我将接受他的回答。 – Preli

+0

另一个快速评论:有可能在JavaScript中检测小数点分隔符的一个技巧:使用toLocaleString()(或类似)将十进制数转换为字符串,然后简单地看看什么被用作小数分隔符。 – Preli

+0

@Preli:这将是一个好主意,但结果并不一致 - 不同的网页浏览器以不同的方式处理它们(其中一些只是破损)。 –