2011-06-18 70 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:這將是一個好主意,但結果並不一致 - 不同的網頁瀏覽器以不同的方式處理它們(其中一些只是破損)。 –