2017-01-03 212 views
0

我有一個嵌套數組的JSON對象,我想發送給控制器。將JSON傳遞給MVC控制器?

這是我的電話jQuery.ajax:

$.ajax({ 
      url: "@Url.Action("ExportJson")", 
      type: "POST", 
      data: JSON.stringify(myObj), 
      contentType:"application/json", 
      success: function (result) { 

      } 
     }); 

控制器:

public ActionResult ExportJson(string json) 
      { 



       return null; 
      } 

爲什麼JSON字符串回來爲空控制器?而console.log(JSON.stringify(myObj))在瀏覽器控制檯中顯示正確的對象。

+3

有類似的問題[這裏](http://stackoverflow.com/questions/21578814/how-to-receive- json-as-an-mvc-5-action-method-parameter),[here](http://stackoverflow.com/questions/4164114/posting-json-data-to-asp-net-mvc)和[here ](http://stackoverflow.com/questions/15317856/asp-net-mvc-posting-json)。 – Jasen

+0

我只需要沒有ViewModel創建的原始json字符串 – user5120455

+2

鏈接問題中有答案,其中註明瞭如何做到這一點。例如,在第一個鏈接上:http://stackoverflow.com/a/21579180/215552 –

回答

0

像這樣改變ajax文章;

$.ajax({ 
     url: "@Url.Action("ExportJson")", 
     type: "POST", 
//************************************ 
     data: {"json" : JSON.stringify(myObj)}, 
//************************************ 
     contentType:"application/json", 
     success: function (result) { 

     } 
    }); 
1

試一試 -

考慮以下JSON數據。假設json數據是從您嘗試提交的任何表單中獲得的。

var jsonData = {"FirstName":"John", "LastName":"Doe", "DoB":"01/01/1970", 
        [{"CompanyName":"Microsoft", "StartDate":"01/01/2010", "EndDate":"01/01/2011"},      
        {"CompanyName":"Apple Inc", "StartDate":"01/01/2011", "EndDate":"01/01/2012"} 
       ]}; 

下面的ajax方法應該讓你去。確保您指定POST類型,因爲ajax方法默認使用GET方法。

$.ajax({ 
 
    url:"@Url.Action("ExportJson")", 
 
    data: jsonData, //this could also be form data 
 
    type:"POST", 
 
    success:function(data){ 
 
    //Do something: 
 
    }}) 
 
    .done(function(data){ 
 
    //data - response from server after save 
 
    }) 
 
    .fail(){ 
 
    alert("ajax error") 
 
    });

MVC控制器: 與HttpPost動詞裝飾操作方法。此操作方法將只處理來自瀏覽器的http發佈請求。從瀏覽器提交的Ajax將自動反序列化爲FormData c#類作爲poco。因此,您應該可以在不做任何修改的情況下使用jsnData對象。

[HttpPost] 
public ActionResult ExportJson(FormData jsnData) 
{ 
    //do something here 
} 

FORMDATA類將是表示JSON數據C#類:

public class FormData 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string DoB { get; set; } 
    public List<WorkExperience> workExperience { get; set; } 
} 

public class WorkExperience 
{ 
    public string CompanyName { get; set;} 
    public DateTime StartDate { get; set; } 
    public DateTime EndDate { get; set; }  
}