将复杂Javascript数组发送到ASP.NET控制器方法
本文关键字:ASP NET 控制器 方法 复杂 Javascript 数组 | 更新日期: 2023-09-27 18:27:35
我有一个asp.net mvc6控制器方法,我想发送我的复杂javascript数组数据。我用两种方法用json获取复杂数组。首先,我尝试了如下方法:
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.stringfy方法时,我无法发送数据。
您是否尝试使用Microsoft的MVC.stringify()方法将适当的数据发送到MVC控制器类。您的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);
}
您可以尝试使用此ajax代码将复杂数组发送到mvc6控制器的操作方法。
您的$.ajax
调用格式不正确,原因是将其配置为发送表单数据和实际发送json数据。要修复的两个选项:
-
将
dataType
设置为json
,并设置正确的contentType
$.ajax({ url: '@Url.Action("TakeComplexArray")', contentType: "application/json; charset=utf-8", data: JSON.stringify({data: data.complexArray}), type: 'POST', dataType: 'json' });
-
只传递非JSON数据:
$.ajax({ url: '@Url.Action("TakeComplexArray")', data: {data: data.complexArray}, type: 'POST', dataType: 'html' });