将 JSON 对象传递给 MVC

Passing JSON object to MVC

我遇到了一个简单的问题,需要很长时间才能弄清楚。我似乎无法从 JS 获取数据到 MVC。

JS:

           var stuff = [{a: 1, b: "Low"}, {a: 5, b:"High"}];
           $.ajax({
                url: '@Url.Action("Action")',
                type: 'POST',
                data: JSON.stringify({ stuff: stuff }),
                traditional: true
            });
            

MVC

         public enum Level
         {
              High = 10,
              Normal = 5,
              Low = 1
         }
         ...
         public class MyModel
         {
              public int a { get; set; }
              public Level b { get; set; }
         }
         ...
         public ActionResult Action(List<MyModel> stuff){
              //stuff is always null no matte what I try?
              ....
         }

我不确定我的问题到底出在哪里,因为这很难调试。

我刚刚意识到这是问题所在:

data: JSON.stringify({ stuff: stuff })

改为:

data: JSON.stringify(stuff)

在您的 ajax 调用中指定 contentType 属性,它应该可以正常工作。

当使用 $.ajax 向服务器发送数据时,默认的 contentType 值为 "application/x-www-form-urlencoded; charset=UTF-8" 。由于我们要发送 JSON 数据,我们应该指定它。

var stuff = [{a: 1, b: "Low"}, {a: 5, b:"High"}];

$.ajax({
    url: '@Url.Action("Action")',
    type: 'POST',
    data: JSON.stringify({ stuff: stuff }),

    contentType:"application/json",  //This is the new line

    traditional: true
}).done(function(res) {
    console.log("Result came back");
});