I had the same problem and I solved my problem by writing a ModelBinder
as below
public class MyModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
if (bindingContext.ModelType == typeof(decimal) || bindingContext.ModelType == typeof(Nullable<decimal>))
{
var valueProviderResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (valueProviderResult != null)
{
decimal result;
var array = valueProviderResult.RawValue as Array;
string value;
if (array != null && array.Length > 0)
{
value = array.GetValue(0).ToString().Replace(",", ""); ;
if (decimal.TryParse(value.ToString(), out result))
{
string val = result.ToString(CultureInfo.InvariantCulture.NumberFormat);
array.SetValue(val, 0);
}
}
}
}
else if (bindingContext.ModelType == typeof(int) || bindingContext.ModelType == typeof(Nullable<int>))
{
var valueProviderResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (valueProviderResult != null)
{
int result;
var array = valueProviderResult.RawValue as Array;
string value;
if (array != null && array.Length > 0)
{
value = array.GetValue(0).ToString().Replace(",", "");
if (int.TryParse(value.ToString(), out result))
{
string val = result.ToString(CultureInfo.InvariantCulture.NumberFormat);
array.SetValue(val, 0);
}
}
}
}
else if (bindingContext.ModelType == typeof(long) || bindingContext.ModelType == typeof(Nullable<long>))
{
var valueProviderResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (valueProviderResult != null)
{
long result;
var array = valueProviderResult.RawValue as Array;
string value;
if (array != null && array.Length > 0)
{
value = array.GetValue(0).ToString().Replace(",","");
if (long.TryParse(value, out result))
{
string val = result.ToString(CultureInfo.InvariantCulture.NumberFormat);
array.SetValue(val, 0);
}
}
}
}
var res = base.BindModel(controllerContext, bindingContext);
return res;
}
}
and add these codes to Application_Start
in global.asax
ModelBinders.Binders.DefaultBinder = new MyModelBinder();