2013-04-14 3 views
3

У меня есть сложный тип, который выглядит как:Проводка сложного типа из JQuery в MVC

public class ReviewProcessLevelModel { 
      public int levelType; 
      public string user; 
      public string field; 
      public string[] dtFieldValues; 
      public string[] dtUsers; 
    } 

Моя размещена строка выглядит (После того, как функция JSON.stringify):

 [ 
     {"levelType":0,"user":"71","field":null,"dtFieldValues":null,"dtUsers":null}, 
     {"levelType":1,"user":null,"field":"Dummy","dtFieldValues":null,"dtUsers":null} 
    ] 

мой контроллер внешность как:

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult saveCampaign(IList<ReviewProcessLevelModel> ReviewProcess) 

И, наконец, это, как я передавать данные в контроллер:

$.ajax({ 
     type: "POST", 
     url: "@Url.Action("saveCampaign", "SaasAccessCertification")", 
     traditional: true, 
     contentType: 'application/json', 
     dataType: 'json', 
     data: getRPData() // returns the string above 
    }).done(function (resp) { 
     debugger; 
    }).error(function (resp) { 
     debugger; 
    }); 

Список содержит 2 ReviewProcessLevelModel, но объекты всегда имеют значения NULL.

Просьба сообщить и поблагодарить вас за ваше время.

ответ

4

Справа, три проблемы.

1 - Имя вашего параметра контроллера должно совпадать с именем объекта вашей проводки, поэтому ваша строка JSON превращается в:

'{"ReviewProcess": [{"levelType": 0,"user": "71","field": null,"dtFieldValues": null,"dtUsers": null},{"levelType": 1,"user": null,"field": "Dummy","dtFieldValues": null,"dtUsers": null}]}' 

2 - Вы должны указать contentType в качестве опции на ваш post :

contentType: 'application/json', 

3 - Это может показаться сумасшедшим, но ваши свойства должны иметь геттеры и сеттеры.

public class ReviewProcessLevelModel 
{ 
    public int levelType { get; set; } 
    public string user { get; set; } 
    public string field { get; set; } 
    public string[] dtFieldValues { get; set; } 
    public string[] dtUsers { get; set; } 
} 

Я взял ваш код, сделал эти обновления, а затем все работало нормально!

+0

Вторая проблема уже позаботилась, спасибо вам большое !!! Ты мне очень помог! – Shahar

+0

А, так было. Не знаю, как я этого не видел ... :) –

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