来自 JavaScript 的 C# JSON 帖子
本文关键字:JSON 帖子 JavaScript 来自 | 更新日期: 2023-09-27 18:35:12
我有以下 2 个保存数据的类:
public class ItemList{
public IList<Item> Items{get;set;}
}
public class Item{
public int id {get;set}
public string name {get;set}
}
我的控制器如下所示:
public virtual JsonResult SaveItems(ItemList items)
{}
我尝试像这样发布一个JS对象:
var toPost = { "items" : [ {"id" : 1, "name":"test}, {"id" : 1, "name":"test"}] }
$.ajax({
type: "POST",
url: "URL TO POST TO",
dataType: "json",
data: toPost,
traditional: true,
success: function (data, status, request) {
if (data.Error != undefined) {
alert("System Error: " + data.Error);
return;
}
console.log("Success");
},
error: function (request, status, error) {
console.log("ERROR");
}
});
我在发布之前做了一个console.log
,数据看起来与 toPost
变量中的描述相同,但在 C# 端调试时,ItemList items
为 null
在 toPost 中使用 JSON.stringify 并设置内容类型
$.ajax({
...
contentType: "application/json; charset=utf-8"
data: JSON.stringify(toPost),
...
});
您的 SaveItems 方法需要一个 ItemsList 对象,并且请求中发送的内容是一个字符串。您需要将请求数据反序列化为 ItemsList 对象,如下所示:
public virtual JsonResult SaveItems(String jsonRequest)
{
ItemsList items = Util.JsonSerializer.Deserialize<ItemsList>(jsonRequest);
// further processing of items
}