【问题标题】:double with comma seperator is failing in binding带逗号分隔符的双精度绑定失败
【发布时间】:2014-11-12 05:55:38
【问题描述】:

我有一个将数据发布到 Web API 端点的表单。该表单有两个输入字段:一个用于文本,一个用于数字。

在 Web API 方面,我的对象是这样设置的:

public class Course
{
    public string Title { get; set }
    public double? Price { get; set; }
}

当我为Price 发送值“25,3”时,我收到以下错误:

值“25,3”对价格无效。

发送“25.3”值可以正常工作。

我正在使用 jQuery 表单序列化发布表单。

【问题讨论】:

  • 错误是在客户端还是服务器端?
  • 我重写了 OnActionExecuting 来验证模型是否有效。在这里我看到了错误:值“25,3”对价格无效。所以服务器端回答简短:)
  • 你如何解析传入的值?
  • 没什么特别的,就是上面的dto

标签: jquery asp.net-web-api


【解决方案1】:

您可以根据this answerweb.config 中指定服务器上的文化。您需要将文化设置为使用逗号表示分数的文化(例如fr-CA)。

如果您希望能够同时接受., 作为分隔符,则需要将Price 设置为string,然后自己解析值。

【讨论】:

  • 所以我尝试改变 json 格式化程序的文化并且它有效。但是如果我将 $("someform").serialize 作为数据发布,它不是使用 json 序列化程序,而是我认为 FormUrlEncodedFormatter 的序列化程序。所以这仍然会失败
  • 文化变化在服务器端(在 web.config 中)。只要该值以“23,5”的形式访问服务器,Web api 上的解析器就应该获取更改。
  • 目前我在 json 格式化程序序列化程序上设置了文化。确实尝试在配置中设置它,但需要做进一步的测试。它似乎对文化设置没有同样的作用..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-29
  • 1970-01-01
相关资源
最近更新 更多