我正在努力驗證使用全球化的小數字段。MVC Jquery全球化 - 驗證小數點
我需要我的價值是在法國的格式(與昏迷小數分隔符和千位分隔符)。
編輯:更新以下This great solution
所以,這裏是我的模型:
public class CompanyTaxHistoryModel
{
[Required]
public DateTime DateFrom { get; set; }
[Required]
public DateTime DateTo { get; set; }
[Required]
[Range(0, 100, ErrorMessage = "The percentage must be between 0 and 100")]
[DisplayFormat(DataFormatString = "{0:N} %")]
[Display(Name = "Company Tax")]
public decimal CompanyTaxPercent { get; set; }
}
這裏是我的web.config:
<globalization requestEncoding="UTF-8" responseEncoding="UTF-8" culture="auto" uiCulture="auto" /
>
我添加了一個「localizationHelper」如下:
namespace xxxx.Helpers
{
public static class LocalizationHelpers
{
public static IHtmlString MetaAcceptLanguage<t>(this HtmlHelper<t> html)
{
var acceptLanguage = HttpUtility.HtmlAttributeEncode(System.Threading.Thread.CurrentThread.CurrentUICulture.ToString());
return new HtmlString(String.Format("<meta name=\"accept-language\" content=\" {0}\">",acceptLanguage));
}
}
}
至極我在_Layout.cshtml使用:
@using xxxx.Helpers
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
@Html.MetaAcceptLanguage()
我已經加入了Globalize.js +所需要的文化到我的項目,並添加以下到我的腳本:
$(document).ready(function() {
var data = $("meta[name='accept-language']").attr("content")
Globalize.culture(data);
});
$.validator.methods.date = function (value, element) {
return Globalize.parseDate(value);
};
$.validator.methods.range = function (value, element, param) {
return this.optional(element) || (Globalize.parseFloat(value) >= param[0] && Globalize.parseFloat(value) <= param[1]);
}
$.validator.methods.number = function (value, element) {
return !isNaN(Globalize.parseFloat(value));
}
一切似乎工作得很好,但我有一個小數值的問題作爲「。」。任何鍵盤的按鈕都應該顯示撥出的值(根據當地文化,可以是「。」或「,」)。
例如,我的瀏覽器設置爲fr-FR,如果僅使用數字鍵盤輸入「12.5」,則會得到「12.5」,因此會出現驗證錯誤。
在這種情況下,「。」數字鍵盤的按鈕應被理解爲昏迷。
任何想法,我錯過了什麼?
對於模型綁定十進制值,這個鏈接會幫助你。 http://haacked.com/archive/2011/03/19/fixing-binding-to-decimals.aspx –