我想向我的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