2015-12-21 30 views
3

我有,我想送我的複雜的JavaScript陣列數據asp.net mvc6控制器的方法。我使用兩種方法將json用於複雜的數組。首先,我試圖像下面的方法:發送複雜的JavaScript陣列要ASP.NET控制器方法

public IActionResult TakeComplexArray(IList<ComplexArrayInfoModel> data) 
{ 
    return PartialView(data); 
} 

方法二,我試試。

public IActionResult TakeComplexArray(ComplexArrayInfoModel[] data) 
{ 
    return PartialView(data); 
} 

我想給複雜的JavaScript數組就像如下:

[Object, Object, Object, Object, Object] 

每個對象的類型是我的模型類類型ComplexArrayInfoModel。每個對象都有這個模型類的不同記錄。有關此複雜陣列的更多細節是像如下:

[Object, Object, Object, Object, Object] 
0: Object 
1: Object 
2: Object 
3: Object 
4: Object 
length: 5 
__proto__: Array[0] 


Complex value has data like as below: 


0: Object 
Name: "aa" 
Surname: "bb" 
Country: null 
City: 5 
Age: 20 
Gender: null 
__proto__: Object 
1: Object 
Name: "ddd" 
Surname: "fff" 
Country: null 
City: 5 
Age: 20 
Gender: null 
__proto__: Object 
2: Object 
Name: "zzz" 
Surname: "ggg" 
Country: null 
City: 5 
Age: 20 
Gender: null 
__proto__: Object 
3: Object 
Name: "www" 
Surname: "ccc" 
Country: null 
City: 5 
Age: 20 
Gender: null 
__proto__: Object 
4: Object 
Name: "ccc" 
Surname: "ddd" 
Country: null 
City: 5 
Age: 20 
Gender: null 
__proto__: Object 
length: 5 
__proto__: Array[0] 

欲這個複雜的數據發送到控制器動作與像如下javascript函數:

function SendComplexData(data, row) { 
    return $.ajax({ 
     url: '@Url.Action("TakeComplexArray")', 
     /*data.complexArray is showed above schema*/ 
     data: JSON.stringify({ data: data.complexArray }), 
     type: 'POST', 
     dataType: 'html', 
    }); 
} 

我無法發送這個複雜的JavaScript陣列。我如何發送這個複雜的數組到這個控制器的行動?同時,當我沒有使用json.stringify方法時,我無法發送數據。

+0

你能發送一個對象到服務器嗎?你爲什麼要調用'JSON.stringify'?使用mvc.stringfy()method.thanks發送數據( –

回答

1

你有沒有嘗試使用Microsoft的MVC.stringify()方法將適當的數據發送給mvc c ontroller類。你的JavaScript函數想如下:

function SendComplexData(data, row) { 
    return $.ajax({ 
     url: '@Url.Action("TakeComplexArray")', 
     /*data.complexArray is showed above schema*/ 
     data: MVC.stringify({ data: data.complexArray }), 
     type: 'POST', 
     dataType: 'html', 
    }); 
} 

而且你的控制器類應該像如下:

public IActionResult TakeComplexArray(IList<ComplexArrayInfoModel> data) 
{ 
    return PartialView(data); 
} 

您可以嘗試複雜的陣列發送到mvc6控制器的操作方法這個Ajax代碼。

+0

)。 –

1

$.ajax調用格式不正確由於其配置爲發送表單數據和實際發送JSON數據的組合。有兩個選項來解決:

  1. 設置dataTypejson並設置正確的contentType

    $.ajax({ 
    url: '@Url.Action("TakeComplexArray")', 
    contentType: "application/json; charset=utf-8", 
    data: JSON.stringify({data: data.complexArray}), 
    type: 'POST', 
    dataType: 'json' 
    }); 
    
  2. 只是通過非JSON數據:

    $.ajax({ 
    url: '@Url.Action("TakeComplexArray")', 
    data: {data: data.complexArray}, 
    type: 'POST', 
    dataType: 'html' 
    }); 
    
相關問題