我想向我的MVC控制器發佈三件事:一個圖像和兩個字符串。發佈到MVC控制器的文件爲空
在查看,我有一個表格,使用enctype="multipart/form-data"
,在選擇圖片文件後自動提交表格。這是在提交處理這種形式:
$("#PhotoUploadForm").on("submit", function (event) {
event.preventDefault();
var ImageData = $("#PhotoUploadFileInput").val();
var GuestNumber = $("#GuestID").val();
var TCSA_ID = vm.GetSelectedTreatmentAreaTCSA_ID(vm.Photographs.SelectedTreatmentArea());
var dto = {
ImageData: ImageData,
GuestNumber: GuestNumber,
TCSA_ID: TCSA_ID
}
$.ajax({
url: 'SaveImage',
type: "POST",
contentType: "multipart/form-data",
data: ko.toJSON(dto),
success: function (data) {
console.log(submitted);
}
});
});
的dto
對象在我型號定義:
public class PhotoUploadDTO
{
public HttpPostedFileBase ImageData { get; set; }
public string GuestNumber { get; set; }
public string TCSA_ID { get; set; }
}
在我控制器,我有在dto
採取的行動一個參數:
public ActionResult SaveImage(PhotoUploadDTO dto)
{
//etc.
}
當我嘗試發帖dto
,所有內容都發布爲空。這對我來說很成問題,因爲我希望能夠將圖像和兩個字符串同時發送到控制器。
我懷疑問題是與var ImageData
(其設置爲<input type="file" id="PhotoUploadFileInput">
值在我的視圖),並且它被張貼C:/fakepath/etc.
但不是實際的圖像文件。這很令人沮喪,因爲我知道如果我有一個表格,只是發佈圖像,但我需要使用此提交處理程序,我不知道如何將實際圖像數據它。
爲什麼數據null
遇到MVC控制器時,我怎麼能發佈這三個項目,同時仍然能夠使用提交處理程序?
您無法通過ajax上傳文件。有一些解決方法,比如通過iframe上傳文件,但不幸的是你不能這樣做。 – 2014-12-05 18:42:32
我認爲你的評論應該足以作爲答案,如果你想發佈它作爲答案。 – alex 2014-12-05 18:45:33
@MelanciaUK'你不能通過ajax *這種方式上傳文件'對於混淆 – 2014-12-05 18:53:42