作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到以下异常:
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/
我是一名优秀的程序员,十分优秀!