Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过ajax传递包含数据和文件的对象数组并在mvc控制器中检索?_Javascript_C#_Jquery_Ajax_Asp.net Mvc - Fatal编程技术网

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,
            });