我无法将JSON提供给我的控制器,我无法弄清楚为什么我在javascript中获得的值不会被传递给控制器。这是我的javascript中的ajax帖子:
this.save = function () {
var data = ko.toJSON(this.Routines);
$.ajax({
type: 'POST',
url: "CreateJson",
data: data,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (result) {
if (!result.success)
alert("test")
else { }
}
})
}
现在数据包含
[{"routine_name":"new routine","duration":"20","rest":"10","rounds":1}]
这就是我想要的,但控制器什么也没显示。这是我的控制器
[HttpPost]
public JsonResult CreateJson(t_routine routine, string data)
{
var message = "success";
return Json(message);
}
据我了解,MVC 3+自动接收JSON而不需要像我的字符串数据这样的参数,我只是把它扔在那里试图弄清楚我是否得到任何东西。 data为null,例程显示0和null,值为null。我错过了什么?
答案 0 :(得分:0)
如果t_routine
代表
[{"routine_name":"new routine","duration":"20","rest":"10","rounds":1}]
然后就像{/ 1>}这样的JSON.stringify
结果上调用ko.toJSON
就足够了
this.save = function () {
var data = JSON.stringify(ko.toJSON(this.Routines));
$.ajax({
type: 'POST',
url: "CreateJson",
data: data,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (result) {
if (!result.success)
alert("test")
else { }
}
})
}
您的控制器操作上的数据参数不需要,您很可能需要将t_routine
参数更改为t_routine[]