Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MVC5控制器未接收JSON对象_Javascript_Json_Ajax_Asp.net Mvc_Knockout.js - Fatal编程技术网

Javascript MVC5控制器未接收JSON对象

Javascript MVC5控制器未接收JSON对象,javascript,json,ajax,asp.net-mvc,knockout.js,Javascript,Json,Ajax,Asp.net Mvc,Knockout.js,我有一个控制器,其方法如下: public JsonResult Save(List<BlogInfo> list) { return Json(new { Data = "" }, JsonRequestBehavior.AllowGet); } $.ajax({ url: "Home/Save", type: "post", contentType: "application/json", data: ko.mapping.toJSON(

我有一个控制器,其方法如下:

public JsonResult Save(List<BlogInfo> list)
{
    return Json(new { Data = "" }, JsonRequestBehavior.AllowGet);
}
$.ajax({
    url: "Home/Save",
    type: "post",
    contentType: "application/json",
    data: ko.mapping.toJSON(ViewModel),
    success: function (response) {
        alert(response.Status);
    }
});
{"Data":[{"Id":1,"Title":"Sudoku Solver","Description":"Programmed Sudoku Solver","Tags":["programming","sudoku"]},{"Id":2,"Title":"Picnic","Description":"Went to millpoint","Tags":["picnic"]},{"Id":0,"Title":"Title","Description":"Description","Tags":[]}]}
我的问题是控制器的列表参数总是空的。我尝试将其更改为字符串而不是列表,但它也是空的

使用Fiddler,我可以看到JSON的传递过程如下:

public JsonResult Save(List<BlogInfo> list)
{
    return Json(new { Data = "" }, JsonRequestBehavior.AllowGet);
}
$.ajax({
    url: "Home/Save",
    type: "post",
    contentType: "application/json",
    data: ko.mapping.toJSON(ViewModel),
    success: function (response) {
        alert(response.Status);
    }
});
{"Data":[{"Id":1,"Title":"Sudoku Solver","Description":"Programmed Sudoku Solver","Tags":["programming","sudoku"]},{"Id":2,"Title":"Picnic","Description":"Went to millpoint","Tags":["picnic"]},{"Id":0,"Title":"Title","Description":"Description","Tags":[]}]}

您显示的JSON并不表示数组,因此您不可能期望将其绑定到服务器上的列表。要实现这一点,请确保从客户端发送对象数组:

data: ko.mapping.toJSON(ViewModel.Data);
这里我们使用表示数组的
ViewModel.Data
属性,这样我们只发送所需的JSON:

[{"Id":1,"Title":"Sudoku Solver","Description":"Programmed Sudoku Solver","Tags":["programming","sudoku"]},{"Id":2,"Title":"Picnic","Description":‌​"Went to millpoint","Tags":["picnic"]},{"Id":0,"Title":"Title","Description":"Description‌​","Tags":[]}]

请发布如何查看您的
数据
ko.mapping.toJSON(ViewModel)
生成了什么?这是我用Fiddler得到的:
{“数据”:[{“Id”:1,“Title”:“数独解算器”,“Description”:“已编程数独解算器”,“Tags”:[“programming”,“Sudoku”]},{“Id”:2,“Title”:“野餐”,“Description”:“God to millpoint”,“Tags”:[“野餐”},{“Id”:0,“Title”:“Title”,“Description”:“Title”,“Description”:“,[]}