2016-02-06 3 views
0

Я могу заставить это работать. Я отправляю Json из JS-файла в контроллер, но контроллер получает нулевой объект.Контроллер, не получающий Json

Это мой 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

Большое спасибо!

ответ

2

Ваша модель неверна, если вы посмотрите на свой Json, вы получаете массив элементов, но ваша модель ожидает одного объекта, который содержит свойство CensusList, которое является массивом CensusReceived, таким образом, десериализация приводит к null, потому что он не совпадает.

Самый простой способ исправить это изменить функцию, как это:

public ActionResult receiveGeoID(CensusReceive[] CensusData) 

В этом случае модель будет соответствовать полученные вами данные.

Кроме того, свойство GEOID должно быть общедоступным или десериализатор не найдет его и будет пустым.

+0

Большое вам спасибо, кажется, что теперь получают объекты, но объекты пустые. – CesarD

+0

Добавьте определение класса CensusReceive, там должна быть ошибка. – Gusman

+0

спасибо, что есть. – CesarD

Смежные вопросы