控制器没有收到Json

时间:2016-02-06 18:34:07

标签: c# json asp.net-mvc

我可以让它发挥作用。我将Json从JS文件发送到控制器,但控制器收到一个空对象。

这是我的JS:

 var MyJson2 = JSON.stringify(resultItems);
             console.log(MyJson2);
             $.ajax({

                 url: "/mainMap/receiveGeoID",
                 type: "POST",
                 data: MyJson2,
                 contentType: "application/json; charset=utf-8",
                 dataType: "json",
                 error: function (response) {
                     alert("error");
                 },
                 success: function (response) {
                     alert("success");
                 }

             });

当我调试程序时,这是Json:

enter image description here

我的模型看起来像这样:

  public class CensusModelList
{
    public List<CensusReceive> CensusList { get; set; }

}

public class CensusReceive
{
    string GEOID { get; set; }

}

我的控制器看起来像这样:

  [HttpPost]
    public ActionResult receiveGeoID(CensusModelList CensusData)
    {
        var test = CensusData;
        return View();

    }

似乎无法获得Json:

enter image description here

非常感谢!

1 个答案:

答案 0 :(得分:2)

你的模型是错误的,如果你看看你的Json你收到了一个项目数组,但是你的模型需要一个包含一个名为CensusList的属性的对象,这是一个CensusReceived数组,因此反序列化导致null对象,因为它不匹配。

解决问题的最简单方法是更改​​您的功能:

public ActionResult receiveGeoID(CensusReceive[] CensusData)

在这种情况下,模型将匹配您收到的数据。

此外,GEOID属性必须是公共的,否则反序列化器将无法找到它并且将为null。