У меня есть вызов AJAX, который передает данные вместе с файлом в ViewModel и вызывает контроллер:
function fncInsTrainingLog()
{
var trainingtitle = getValOf("trainingTitle");
var ImageFile = $('#imageUploadForm')[0].files[0];
var sdata = {
TrainingTitle :trainingtitle,
ImageFile : ImageFile
}
$.ajax({
url: "/Capability/InsTrainingLog",
type: "POST",
data: JSON.stringify(sdata),
contentType: "application/json",
dataType: "json",
success: function () {
location.reload();
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("A problem has been encountered. Please contact the web administrator.");
}
});
}
Вот мой контроллер:
[HttpPost]
public JsonResult InsTrainingLog(TrainingModel trainingModel)
{
// Psuedo code to save file to drive
// get file from TrainingModel
// save(file)
string sp = "usp_InsTrainingLog";
object[] param =
{
"@TrainingTitle", trainingModel.TrainingTitle
};
dbHelper.ExecuteProcedureNonQuery(sp, param);
var result = param;
return Json(result, JsonRequestBehavior.AllowGet);
}
ViewModel:
public sealed class TrainingModel
{
public HttpPostedFileBase ImageFile { get; set; }
public string TrainingTitle { get; set; }
}
ImageFile
в TrainingModel
возвращает ноль, но TrainingTitle
в порядке.Почему ViewModel не может прочитать файл из вызова AJAX?
Как передать файл в ViewModel и сохранить изображение на моем ПК?