【问题标题】:MVC 3 decimal server-side validation problemMVC 3十进制服务器端验证问题
【发布时间】:2011-07-07 16:07:00
【问题描述】:

我正在使用 JQuery Unobtrusive 验证...我配置了 Globalize 以接受这样的数字:1.500,50(由 JQuery 屏蔽)

到目前为止我的代码

1-) 配置全球化

$.validator.methods.number = function (value, element) {
    return this.optional(element) || !isNaN(Globalize.parseFloat(value));
};

$(function () {
    Globalize.culture('pt-BR');
});

2-) 配置的 web.config

<globalization culture="pt-BR" uiCulture="pt-BR" />

好的,所以我正在使用 JQuery 插件将文本框格式化为 Money(PT-BR),如下所示:1.500.000,50...

我的 JQuery 客户端验证工作正常!但是当它进行服务器验证时,我得到了一个 ModelState 错误:

"The value '1.500.000,50' is not valid for Total."

我该如何解决这个问题?

谢谢

【问题讨论】:

  • 这是什么格式?有两位小数而不是一位?
  • '.'表示千位,',' 表示小数部分...

标签: asp.net-mvc-3 jquery-validate


【解决方案1】:

MVC 绑定到这样的值存在问题。通过 Phil Haack 的this post。它向您展示了如何创建自定义模型绑定器来处理此问题。

【讨论】:

  • 谢谢...我已经读过...并且出于某种奇怪的原因,我的 DecimalModelBinder 从未被调用...我不知道为什么,我完全按照 Phil Haack 所描述的...唯一的区别我'm 使用 S#arp 架构...
  • @Paul S#arp Architeture 添加自定义活页夹吗?源代码我还没看完。
  • 它在 Global.asax 上有:ModelBinders.Binders.DefaultBinder = new SharpModelBinder();
  • @Paul 要么你必须删除该行或修改 SharpModelBinder 以使用 decimal 的自定义模型绑定器
  • 有mvc6的解决方案吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-28
  • 1970-01-01
  • 2020-04-03
  • 2012-07-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多