从视图发送 JSON 到控制器 ASP.NET MVC 给出空值

Sending JSON from View to Controller ASP.NET MVC gives null values

我在将 JSON 数据从 MVC 视图发送到控制器时遇到问题,我得到的控制器是:

我发送的 JSON Url.Action 看起来像这样:(我通过 .push() 然后 JSON.stringify 自己将数组添加到数组来创建它)

[
   [
      {
         "isOrdered":false,
         "orderLineId":"4550",
         "comment":"",
         "orderId":"2789"
      }
   ],
   [
      {
         "isOrdered":false,
         "orderLineId":"4551",
         "comment":"",
         "orderId":"2789"
      }
   ]
]

我用JQueryajaxPOST

$.ajax({
            type: "POST",
            url: "@Url.Action("SaveCheckboxesAndComments")",
            data: JSON.stringify(array),
            traditional: true,
            contentType: "application/json; charset=utf-8",
            dataType: 'json'
        });

和我的控制器:

public class JsonData
        {
            public bool IsOrdered { get; set; }
            public string OrderLineId { get; set; }
            public string Comment { get; set; }
            public int OrderId { get; set; }
        }

        [HttpPost]
        public async Task<ActionResult> SaveCheckboxesAndComments(List<JsonData> jsonArray)
        {...

我应该更改我的 class JsonData 或 JS 中的某些内容以获取值吗?因为不知何故“框架”在起作用。

一些尝试:

  1. 在开发控制台中打开您的网络选项卡并检查 POST 请求的详细信息以确保 url 正确并且发送的 JSON 是正确的你期待什么
  2. [DataContract] 属性修饰 JsonData class,用 [DataMember(Name = "Name")] 属性修饰每个 属性 - 确保你不运行 大小写问题(class 中的 属性 名称全部大写,而您的 json 均以小写字母开头)。
  3. 您生成的 Json 上似乎有一组额外的外部 [ ] 括号。因此,虽然您的操作正在等待 List<JsonData> jsonArray,但它正在发送 List<List<JsonData> jsonArray>。查看它如何从正在发送的 json 中删除最外面的方括号。