I have a problem similar to this question
I'm using MVC. I have added a regular expression in my ViewModel to force the users to enter a number with 1 or 2 decimal places. I am thinking there must be an error in my Regex but the same statement is working fine elsewhere.
If I put in 0.00 as my rate, when I submit my form, ModelState.IsValid returns as false.
[RegularExpression(@"^(\d+\.\d{1,2})$", ErrorMessage = "Please enter valid rate with 1 or 2 decimal places")]
public double DecimalRate { get; set; }
As per a suggestion in this question, I have verified that this rate is causing the error by setting a debug at ModelState.IsValid in Visual Studio and checking the errors.
I have a hunch it might have something to do with the attribute being of type double?
This is happening because your property's data type is double
(not string
), so it doesn't represent a series of characters. It represents a numerical value. If your input is 0.00
, then it will represent the value 0
, and not match the regex. I suspect you will encounter the same issue for numbers like 3.00
as well.
If you need the user's inputs to be in a specific format, change your field to a string
and then use Convert.ToDouble()
when and if you need to convert it to a number.