2013-04-14 39 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,但對象始終爲空值。

請指教,並感謝您的時間。

回答

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 - 聽起來很瘋狂,但你的屬性必須有getter和setter。

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

啊,就這樣。不知道我是怎麼看不到的...... :) –

相關問題