In asp mvc I have an input text control that must accept a double number.
I have customized the jQuery validation plugin to accept number with .
and ,
separator and written a custom DecimalBinder
:
public class DecimalModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext,
ModelBindingContext bindingContext)
{
ValueProviderResult valueResult = bindingContext.ValueProvider
.GetValue(bindingContext.ModelName);
ModelState modelState = new ModelState { Value = valueResult };
object actualValue = null;
try
{
actualValue = Convert.ToDouble(valueResult.AttemptedValue, CultureInfo.InvariantCulture);
}
catch (FormatException e)
{
modelState.Errors.Add(e);
}
bindingContext.ModelState.Add(bindingContext.ModelName, modelState);
return actualValue;
}
}
The problem is that if in the input text control I write, for example, "3,3" the
actualValue = Convert.ToDouble(valueResult.AttemptedValue, CultureInfo.InvariantCulture);
give me the value "33" and, instead, I want 3.3.
When I inspect the modelState
I see
Why actualValue is "33" instead of "3.3" if i use InvariantCulture
?