gpt4 book ai didi

jquery - MVC3 模型绑定(bind)导致 "The parameter conversion from type ' System.Int3 2' to ' System.Decimal' 失败 - 无类型转换器”

转载 作者:行者123 更新时间:2023-12-03 22:24:10 26 4
gpt4 key购买 nike

我遇到以下异常:

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 post 将 json 发布回 Controller 之后的结果。MVC3 正确地将 JSON 绑定(bind)到模型,因为我可以看到 watch 中的所有数据,但是 ModelState 有此错误。

该 View 有一个小数字段和一个包含数字的文本框。即使文本框具有整数值,我也会收到此错误。

关于为什么失败的任何想法?

最佳答案

问题似乎源于 MVC3 附带的默认 Model Binder 无法将整数转换为小数。但是,如果 json 中的源值是字符串或十进制值,则它可以进行转换。

解决方案是为十进制值创建自定义模型绑定(bind)器。

将其添加到 global.asax.cs

ModelBinders.Binders.Add(typeof(decimal), new DecimalModelBinder());

并创建模型绑定(bind)器:

  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);
}
}

关于jquery - MVC3 模型绑定(bind)导致 "The parameter conversion from type ' System.Int3 2' to ' System.Decimal' 失败 - 无类型转换器”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5500150/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com