2017-04-22 48 views
-1

我有方法的控制器如下:MVC5控制器未收到JSON对象

public JsonResult Save(List<BlogInfo> list) 
{ 
    return Json(new { Data = "" }, JsonRequestBehavior.AllowGet); 
} 

而且我从客户端AJAX职位如下:

$.ajax({ 
    url: "Home/Save", 
    type: "post", 
    contentType: "application/json", 
    data: ko.mapping.toJSON(ViewModel), 
    success: function (response) { 
     alert(response.Status); 
    } 
}); 

我的问题是列表参数到控制器始终为空。我试着将它改为string而不是List,但也是null。

使用招,我可以看到,JSON是被通如下:

{"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":[]}]} 
+1

请post hows看你的'数据' –

+3

'ko.mapping.toJSON(ViewModel)'产生了什么?发贴数: –

+0

这就是我使用的Fiddler:'{“Data”:[{“Id”:1,“Title”:“Sudoku Solver”,“Description”:“程序化Sudoku求解器”,“Tags”编程“,”数独“]},{”Id“:2,”标题“:”野餐“,”描述“:”去毫点“,”标签“:[”野餐“]},{”Id“ 0,“标题”:“标题”,“描述”:“描述”,“标签”:[]}]}' –

回答

0

你已经表明并不代表阵列中的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":[]}] 
+0

完美,欢呼声。 –