I’m working on an MVC 3 application. One of the fields in the model is of type double and defined as follows:
[Required(ErrorMessageResourceName = "ListingItemPriceRequired", ErrorMessageResourceType = typeof(ErrorMessages))]
[Display(Name = "DisplayListingItemPrice", ResourceType = typeof(Display))]
[Range(1, 500000000, ErrorMessageResourceName = "ListingItemPriceNotWithinRange", ErrorMessageResourceType = typeof(ErrorMessages))]
public double Price { get; set; }
Still, when I enter a value of a number with some trailing spaces like “342 “, I get the default message “The field price must be a number”.
Even the validation attribute on the Price input field has something as “data-val-number”.
Thanks
The default message is baked deeply into the framework, as a string resource. It is added by the default model binder when trying to bind the string value to a double type. So if you want to change this default message you could write a custom model binder. Here’s an example I wrote for the DateTime type which has the same issue: https://stackoverflow.com/a/7836093/29407