来自 JavaScript 的 C# JSON 帖子

C# JSON Post From JavaScript

本文关键字:JSON 帖子 JavaScript 来自      更新时间:2023-09-26

我有以下 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
}