2015-12-21 78 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' 
    }); 
    
相关问题