我正在尝试使用FormData为我的数据库中的特定项目上传asp .net mvc中的图像。为此,我需要在图像中发送数据库中项目的ID以将图像链接到。
我需要使用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 :(得分:0)
事实证明我做了一个拼写错误,表单数据中categoryId的键与控制器中方法中的键不同。我还从ajax调用中删除了数据类型。