Javascript 如何通过ajax传递包含数据和文件的对象数组并在mvc控制器中检索?
我有一个如下所示的对象数组Javascript 如何通过ajax传递包含数据和文件的对象数组并在mvc控制器中检索?,javascript,c#,jquery,ajax,asp.net-mvc,Javascript,C#,Jquery,Ajax,Asp.net Mvc,我有一个如下所示的对象数组 var array=[ { Name:"name", Address:"address", Files://array of files }, { Name:"name", Address:"address", Files://array of files } ]; 我需要通过ajax传递数组,并在mvc控制器上检索它。我并没有像控制器中的数组一样同时获取数据和文件 我在单个对象的情况下使用了formData。但是在数
var array=[
{
Name:"name",
Address:"address",
Files://array of files
},
{
Name:"name",
Address:"address",
Files://array of files
}
];
我需要通过ajax传递数组,并在mvc控制器上检索它。我并没有像控制器中的数组一样同时获取数据和文件
我在单个对象的情况下使用了formData。但是在数组的情况下,我不知道如何使用formData。请任何人帮助
我的代码。。
模型
控制器
[HttpPost]
public JsonResult AddData(List<DataModel> data)
{
//code
}
您可以通过字符串化数组并通过
ajax
的数据attribute
传递数组
var _myArray=JSON.stringify(array),
$.ajax({
//Rest of the code
data: _myArray,
});
在对象的情况下使用表单数据是可以的。但是如何传递对象数组呢?您需要使用
FormData
,但是您还需要生成正确的名称-[0]。名称
,[0]。地址
,[0]。文件
,[1]。名称
,[1]。地址
,[1]。文件
等将文件数据作为水滴结束。将表单输入转换为json字符串将不起作用,因为您的表单包含多个文件,所以请尝试将每个文件转换为blob。@Stephen Muecke如何生成此数组的FormData?json.stringify会将数组中的文件更改为{}。那么这就行不通了。是谁一直在投票完全错误的答案?@Stephen Muecke你能证明这是一个错误的答案吗?是的。如果你对数据进行字符串化,你还必须使用contentType:'json'
,否则DefaultModelBinder
不会绑定它,但你不能使用contentType:'json'
发送文件。建议你自己试试。
$.ajax({
type: "POST",
url: '/Mydata/AddData',
data: {data:array},
contentType: false,
processData: false,
dataType: "json",
success: function (json) {
//some function
}
});
var _myArray=JSON.stringify(array),
$.ajax({
//Rest of the code
data: _myArray,
});