3

我创建了一个 ViewModel 对象,它有一个包含价格的小数字段。当我将其发布到我的控制器时,会发生以下情况:

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

我该如何解决?我希望“15.00”是一个正确的值,但我不知道如何做到这一点。我尝试了几个在互联网上找到的自定义模型绑定器,但它们不起作用。

4

2 回答 2

5

解决此问题的最简单方法是将语言固定在 web.config 文件中:

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

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

为什么是最简单的?这样,包含的 JavaScript 助手可以毫无问题地进行验证(这是通过假设数字应该是美国格式的值来完成的),现在(由于我们的更改)在服务器上是相同的。因此,在客户端有效的东西在服务器端也有效(声明仅对简单情况和启用 JavaScript 的浏览器有效)。

所有其他选项都涉及更多编辑、扩展和有关 MVC 3 中本地化的知识。

于 2012-05-18T18:28:50.580 回答
0

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

[NotMapped]
public string priceComputed {get;set}

然后在您的控制器中,您在右侧字段中设置值

price = convert.todecimal(pricecomputed)
于 2017-10-14T00:42:39.803 回答