【发布时间】:2012-05-18 18:21:03
【问题描述】:
我创建了一个 ViewModel 对象,它有一个包含价格的小数字段。当我将它发布到我的控制器时,会发生这种情况:
- 输入“15” -> 好!控制器收到 15 个。
- 输入“15.00” -> 不行!控制器收到一个“空”字段。
- 输入“15,00” -> 验证错误,因为该字段应使用句点进行格式化(我暂时只使用一种格式化类型以避免复杂性)。
- 输入“15.00M” -> 验证错误,可能是因为它不是数字。
我该如何解决这个问题?我希望“15.00”是一个正确的值,但我不知道如何做到这一点。我尝试了几个在互联网上找到的自定义模型绑定器,但它们不起作用。
【问题讨论】:
-
您是否有理由要使用小数而不是双精度数?
-
嗯,这是一个“金钱”价值。我学会了总是使用小数来表示货币价值。
-
值“15.00”不是有效的小数,但“15.00M”是有效的小数。试试看,十进制测试 = 15.00;将显示错误。您使用的模型绑定器可能没有转换它。现在,如果你做了 decimal.parse("15.00") 它应该可以工作。
-
没关系,因为转换是由 MVC 引擎完成的。唯一重要的是如果 MVC 引擎能够从给定的值(从查询字符串或名称/值对)构造所需的模型。
-
显示您的视图模型和您的操作方法。
标签: c# asp.net-mvc model-view-controller model-binding