ASP.NET MVC视图模型使用浮点数时绑定小数空(ASP.NET MVC ViewModel b

2019-09-17 08:34发布

我创建了具有含价格小数领域的视图模型对象。 当我张贴到我的控制器,这是发生了什么:

  • 输入 “15” - >确定! 控制器接收15。
  • 输入 “15.00” - >也不行! 控制器接收到“空”字段。
  • 输入“15,00” - >验证错误,因为该字段应该用一段被格式化(我只是坚持一个格式类型,以避免复杂暂时)。
  • 输入“15.00M” - >验证错误,可能是因为它不被视为一个数字。

我该如何解决? 我想“15.00”是一个正确的值,但我无法弄清楚如何做到这一点。 我尝试了,我就发现interweb定制modelbinders的,但他们没有工作。

Answer 1:

解决这个问题最简单的方法是脚在web.config文件中的语言:

<globalization culture="en-us" uiCulture="en-us" />

你必须把这个在<system.web>节点。

为什么是最简单的? 通过这种方式,包含的JavaScript助手可以做验证没有问题(这是通过假定数字应该是美国格式化值来实现),这是现在(由于我们的变化)的服务器上的相同。 因此东西是有效的客户端也将在服务器端(声明仅适用于简单的情况下,并启用JavaScript的浏览器)有效。

所有其他选项包括更多的编辑,扩展和知识有关MVC 3的本地化。



Answer 2:

创建一个字符串类型的字段没有映射,如下所示

[NotMapped]
public string priceComputed {get;set}

然后在你的控制器,你在右场设定值

price = convert.todecimal(pricecomputed)


文章来源: ASP.NET MVC ViewModel binded decimal empty when using floating point numbers