2016-06-26 126 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調用中刪除數據類型。