我有一个控制器,方法如下:
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);
}
});
我的问题是控制器的列表参数始终为空。我尝试将其更改为字符串而不是列表,但这也是空的。
使用 Fiddler,我可以看到 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":[]}]}
您显示的 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":[]}]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句