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”部分非常好