我得到以下异常:
Exception {“The parameter conversion
from type ‘System.Int32’ to type
‘System.Decimal’ Failed because no
type converter can convert between
these types.”} System.Exception
{System.InvalidOperationException}
这是在我使用JQuery Ajax后把json发回到控制器.
MVC3正确地将JSON绑定到模型,因为我可以看到手表中的所有数据,但是ModelState有这个错误.
该视图具有一个十进制字段和一个保存数字的文本框.
即使文本框具有整数值,也会收到此错误.
任何想法,为什么这是失败?
解决方法
这个问题似乎源于MVC3无法将整数转换为十进制的默认模型绑定.但是,如果json中的源值是字符串或十进制值,则可以进行转换.
将其添加到global.asax.cs
ModelBinders.Binders.Add(typeof(decimal),new DecimalModelBinder());
并创建模型binder:
public class DecimalModelBinder : DefaultModelBinder { public override object BindModel(ControllerContext controllerContext,ModelBindingContext bindingContext) { var valueProviderResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName); return valueProviderResult == null ? base.BindModel(controllerContext,bindingContext) : Convert.ToDecimal(valueProviderResult.AttemptedValue); } }