【问题标题】:Unable to send list of object containing file to controller无法将包含文件的对象列表发送到控制器
【发布时间】:2019-04-30 15:28:28
【问题描述】:

我正在尝试将对象列表从我的视图发送到控制器。每个对象都有一个文件以及其他一些属性。 这是模型:

public class FilesUploadModel
    {
        public HttpPostedFileBase file { get; set; }
        public string fileTaskId { get; set; }
        public bool upload { get; set; }
        public bool read { get; set; }
        public bool import { get; set; }
        public bool isReupload { get; set; }
        public int fileReadId { get; set; }
    }

控制器:

public ActionResult FileSave(List<FilesUploadModel> models)
        {}

这就是我尝试将列表发送到控制器的方式:

var filesUploadModel = [];
function someFn(){
   var uploadModel = {
                        file = someInput.files[0]
                        fileTaskId: "2563",
                        upload: true,
                        read: true,
                        import: true,
                        isReupload: false,
                        fileReadId: 0
                    }
                    filesUploadModel.push(uploadModel);
}
function UploadFiles(){
        var formData = new FormData();

          filesUploadModel.forEach(function (model) {  //filesUploadModel is the list 
            formData.append('models', model);
          });

        $.ajax({
            url: "/Company/FileSave",
            type: 'POST',
            enctype: 'multipart/form-data',
            processData: false,
            contentType: false,
            data: formData,
            complete: function (data) {

            }
        });
    }

但我无法在控制器中接收数据。无法解决这里的问题。

【问题讨论】:

  • 您是否收到错误消息?调试服务器端得到什么?
  • @Sagivb.g 我只是在服务器端得到一个空列表。
  • 其他值可以吗?
  • 我只是发送 FilesUploadModel 对象的列表,它在服务器端是空的。因此,不会有任何其他值。

标签: javascript c# jquery asp.net ajax


【解决方案1】:

您发送的不是文件列表,而是带有文件列表的对象,请更改您的操作以接收具有文件列表属性的对象

public ActionResult FileSave(FileSaveRequest request)
{

}


public class FileSaveRequest{

 public List<FilesUploadModel> Models { get;set; }

}

【讨论】:

    【解决方案2】:

    我终于找到了问题所在。当我们试图传递一组对象时,我们需要为每个对象添加一个索引:

        filesUploadModel.forEach(function (model, i) {
            formData.append('models[' + i + '].file', model.file);
            formData.append('models[' + i + '].fileTaskId', model.fileTaskId);
            formData.append('models[' + i + '].upload', model.upload);
            formData.append('models[' + i + '].read', model.read);
            formData.append('models[' + i + '].import', model.import);
            formData.append('models[' + i + '].isReupload', model.isReupload);
            formData.append('models[' + i + '].fileReadId', model.fileReadId);
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-29
      • 1970-01-01
      • 2021-09-17
      • 2014-10-31
      • 2023-02-04
      • 2019-09-22
      • 2019-11-29
      • 1970-01-01
      相关资源
      最近更新 更多