我可以让它发挥作用。我将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:
我的模型看起来像这样:
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:
非常感谢!
答案 0 :(得分:2)
你的模型是错误的,如果你看看你的Json你收到了一个项目数组,但是你的模型需要一个包含一个名为CensusList的属性的对象,这是一个CensusReceived数组,因此反序列化导致null对象,因为它不匹配。
解决问题的最简单方法是更改您的功能:
public ActionResult receiveGeoID(CensusReceive[] CensusData)
在这种情况下,模型将匹配您收到的数据。
此外,GEOID属性必须是公共的,否则反序列化器将无法找到它并且将为null。