jquery – MVC3模型绑定导致“从System.Int32类型到”System.Decimal“的参数转换失败 – 没有类型转换器”

前端之家收集整理的这篇文章主要介绍了jquery – MVC3模型绑定导致“从System.Int32类型到”System.Decimal“的参数转换失败 – 没有类型转换器”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我得到以下异常:

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中的源值是字符串或十进制值,则可以进行转换.

解决方案是为十进制值创建一个自定义模型binder.

将其添加到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);
        }
    }
原文链接:https://www.f2er.com/jquery/175900.html

猜你在找的jQuery相关文章