Asp.net mvc 4 ASP.NET MVC从ajax调用向操作传递double(我收到一个null)

Asp.net mvc 4 ASP.NET MVC从ajax调用向操作传递double(我收到一个null),asp.net-mvc-4,Asp.net Mvc 4,我不能把替身传给我的动作(至少不能以正确的方式) 这是我的行动: public JsonResult SomeAction(double? n = null) { // ... } 这是我的ajax调用: $.ajax({ async: true, type: 'POST', url: '/SomeController/SomeAction', data: { "n": 1.5 }, success: fu

我不能把替身传给我的动作(至少不能以正确的方式)

这是我的行动:

  public JsonResult SomeAction(double? n = null)
  {
      // ...
  }
这是我的ajax调用:

$.ajax({
    async: true,
    type: 'POST',
    url: '/SomeController/SomeAction',
    data: {
        "n": 1.5
    },
    success: function (data) {
        ...
    }
});
$.ajax({
        contentType: 'application/json; charset=utf-8',
        data: JSON.stringify({ n: '1.5'}),
        dataType: 'json',
        processData: false,
        type: 'POST',
        url: '/SomeController/SomeAction',
        success: function (data) {
        }
})
未将数字1.5传递给操作。在服务器端调试时,我收到的是空值。

如果我将ajax更改为:

$.ajax({
    async: true,
    type: 'POST',
    url: '/SomeController/SomeAction',
    data: {
        "n": "1,5"
    },
    success: function (data) {
        ...
    }
});
我在服务器端得到了1.5分

要使第一个ajax调用正常工作,我需要在服务器端做什么更改?

另一件对我有效的事情是使用第一个ajax调用并将操作的签名更改为:

public JsonResult SomeAction(string n = "")
{
       double parsedN = Convert.ToDouble(n);
}
当然,这两种解决方案都会改变您的ajax调用:

$.ajax({
    async: true,
    type: 'POST',
    url: '/SomeController/SomeAction',
    data: {
        "n": 1.5
    },
    success: function (data) {
        ...
    }
});
$.ajax({
        contentType: 'application/json; charset=utf-8',
        data: JSON.stringify({ n: '1.5'}),
        dataType: 'json',
        processData: false,
        type: 'POST',
        url: '/SomeController/SomeAction',
        success: function (data) {
        }
})

最终奏效的是另一个问题的答案:

在此引述:

可能是由于cultureinfo,某些区域性使用,而不是。对于 十进制分隔符。请尝试在web.config中设置以下内容:



为什么被否决?请解释我不想更改我的ajax调用,ajax代码中的“n:1.5”部分非常好