【发布时间】:2014-09-21 03:23:09
【问题描述】:
我正在尝试将我在页面上收集的一些文件发布到我的 ASP.Net MVC5 控制器。我将向您展示我期待的请求对象,以及我用来发布请求的前端代码。
当涉及到控制器时,CoverSheet 确实通过了,但是无论我做什么,SupportingDocuments 数组始终为空。我尝试使用 FormData 并尝试仅使用普通的 JS 对象,两者结果相同。
public class SomeRequest
{
public int SomeRequestId { get; set; }
public HttpPostedFileBase CoverSheet { get; set; }
public HttpPostedFileBase[] SupportingDocuments { get; set; }
}
这是前端
var formData = new FormData();
var supportingDocsArray = [];
_.each(supportingDocumentsInput[0].files, function(f) { supportingDocsArray.push(f); });
formData.append('SomeRequestId', self.selectedThing().SomeRequestId);
formData.append('CoverSheet', coverSheetInput[0].files[0]);
formData.append('SupportingDocuments', supportingDocsArray);
var request = $.ajax({
url: '/SomeController/Upload',
data: formData,
type: 'POST',
dataType: 'json',
processData: false,
});
如您所见,我希望 CoverSheet 中只有一个文件,而 SupportingDocuments 中可能有一个文件数组。
当涉及到控制器时,CoverSheet 确实通过了,但是无论我做什么,SupportingDocuments 数组始终为空。
有什么技巧可以让它工作吗?
谢谢,祝你有美好的一天。
【问题讨论】:
-
可以从this.Request.Files访问这个文件,不需要action参数中的属性。
-
如果我想这样做,是否需要使用 .ajax() 的特定方式?
标签: jquery asp.net ajax asp.net-mvc asp.net-mvc-5