I have this field:
public decimal Price { get; set; }
in Database it is decimal (7,2).
View:
@Html.EditorFor(model => model.Pric
One solution I found was to override the validation functions of jquery.validate.js
<script>
$.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);
}
//Date dd/MM/yyyy
$.validator.methods.date = function (value, element) {
var date = value.split("/");
return this.optional(element) || !/Invalid|NaN/.test(new Date(date[2], date[1], date[0]).toString());
}
</script>
You may want to decorate your field with the [DisplayFormat]
attribute as bellow:
[DisplayFormat(DataFormatString = "{0:N}", ApplyFormatInEditMode = true)]
public decimal Price { get; set; }
I have the same issue, I used to solve it with the globalisation library (globalize.js) but they changed it so it doesn't include the localisation files. It is supposed to get them from the cldr library, but I haven't figured out how.
You might find your answer here error with decimal in mvc3 - the value is not valid for field , it didn't work for me so i used this temporary
<div class="col-md-10">
@{ Html.EnableClientValidation(false); }
@Html.EditorFor(model => model.DecimalValue, new { htmlAttributes = new { @class = "form-control" } })
@{ Html.EnableClientValidation(true); }
@Html.ValidationMessageFor(model => model.DecimalValue, "", new { @class = "text-danger" })
</div>
and i find this here ASP .NET MVC Disable Client Side Validation at Per-Field Level