2016-06-26 82 views
0

我想上传一个图像在asp.net。mvc使用FormData为我的数据库中的特定项目。为此,我需要与图像一起发送数据库中项目的ID以链接图像。FormData在asp.net。mvc文件上传和其他数据比文件

我需要使用FormData,因为我不需要刷新页面。所以我使用jQuery与图像的Ajax。

我使用formdata.append添加了图像的ID,但是我在服务器中得到一个错误,它告诉我在执行ajax请求时调用的方法的id参数不可为空,因此它不能被映射。它应该映射到我前面提到的数据库中的项目的ID。

但我在表单数据中添加了该项目的ID。

这是我的javascript代码:

var formData = new FormData(); 
var totalFiles = document.getElementById("inputImage").files.length; 
formData.append("categoryId", response.data.toString()); 
for (var i = 0; i < totalFiles; i++) { 
    var file = document.getElementById("inputImage").files[i]; 
    formData.append("categoryImage", file); 
} 
$.ajax("@Url.Action("SaveCategoryImage", "Categories")", 
{ 
    type: "POST", 
    dataType: "JSON", 
    data: formData, 
    contentType: false, 
    processData: false, 
    headers: { __RequestVerificationToken: $('input[name=__RequestVerificationToken]').val() } 
}); 

而且这是在控制器的方法应该被调用:

public async Task<ActionResult> SaveCategoryImage(long cateogoryId, HttpPostedFileBase image) 
{ 
    return new JsonNetResult(new BasicActionResultViewModel {IsSuccessful = true}); 
} 

那么,为什么不的ASP.NET MVC映射ID我发送表单数据到控制器的方法中的id?

+0

'response.data.toString()'的值是什么? –

+0

而且文件不会被绑定 - 参数需要是IEnumerable categoryImage' –

回答

0

事实证明,我犯了一个错字,表格数据中categoryId的键与控制器中的方法中的键不同。我也从ajax调用中删除数据类型。