[asp.net-mvc]通过使用 FormData 到 ASP.NET MVC 的 AJAX 发送文件

发布时间: 2016/10/6 5:20:18
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有一个简单的模型︰

public class MyModel {
   public string Description { get; set; }
   public HttpPostedFileBase File {get; set; }
}

和我的 MVC 行动︰

[HttpPost]
public ActionResult Upload(List<MyModel> data) {
   // do soemthing
}

和最后的 JavaScript:

$("#chooseFile").on("change", function (){
    var files = $(this).prop("files");
    var array = [];    

   for(int i=0; i<files.length; i++) {
      var obj = {};
      obj.Description = "My custom description" + i;
      obj.File = files[i];

      array.push(obj);
   }

   var formData = new FormData();
   formData.append("data", array);

   var xmlHttpRequest = new XMLHttpRequest();
   xmlHttpRequest.open("POST", "/test/Upload");
   xmlHttpRequest.send(formData);
});

问题是, dataUpload 行动总是有 Count = 0 。在哪里是我的错?

解决方法 1:

在命令绑定到复杂对象的集合,(中的名称/值对) 的名称必须包括索引器。您的脚本需要添加到名称 FormData 在下列格式- '[0].Files', '[0].Description', '[1].Files', '[1].Description'

$("#chooseFile").on("change", function() {
  var files = $(this).prop("files");
  var formData = new FormData();
  for(int i=0; i<files.length; i++) {
    formData.append('[' + i + '].File', files[i]);
    formData.append('[' + i + '].Description', 'My custom description' + i);
  }
  var xmlHttpRequest = new XMLHttpRequest();
  ....
官方微信
官方QQ群
31647020