Asp.net-Mvc

十進製欄位和本地化的 MVC3 編輯

  • November 12, 2011

我的語言環境使用逗號,,而不是.小數點分隔符。

在 MVC3 中,當我打開顯示十進制值的編輯視圖時

@Html.EditorFor(model => model.MyDecimalVal)

該值顯示正確。

當我用逗號輸入值時,我收到錯誤“值不是數字”,如果我用點輸入值,我沒有收到錯誤,但實際上沒有保存任何值。

如何處理這種情況?

通過調整驗證邏輯來解決這個問題已經解釋過了,所以這裡有一種不同的方法。

<system.web>如果您想將文化設置為 ,請將以下程式碼放入節點下的 web.config 文件中en。它將處理小數分隔符:

<globalization culture="en-US" uiCulture="en" />

我不確定,但對於DateTime,你仍然綁定到你的伺服器的語言環境。

這篇博文建議覆蓋預設的 jQuery 驗證數字和範圍規則,以啟用對逗號小數分隔符的客戶端支持。

為了解決這些問題,我們可以從 jquery.validate.js 文件中獲取 range() 和 number() 函式的預設實現。然後我們創建另一個 .js 文件(比如 jQueryFixes.js),在其中我們使用包含支持逗號作為小數分隔符的函式覆蓋這些預設函式。文件的內容應該是這樣的:

$.validator.methods.range = function (value, element, param) {
   var globalizedValue = value.replace(",", ".");
   return this.optional(element) || (globalizedValue >= param[0] && globalizedValue <= param[1]);
}

$.validator.methods.number = function (value, element) {
   return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:[\s\.,]\d{3})+)(?:[\.,]\d+)?$/.test(value);
}

引用自:https://stackoverflow.com/questions/8101589