Я занят созданием индикатора ожидания для загрузки файлов, но мне кажется, что я не могу получить обратный вызов от метода POST, который запускается в контроллере. Я искал полдня и перепробовал множество разных решений, но ни одно из них не помогло в моем случае.
У меня есть модель:
public class FileUploadModel
{
[Required(ErrorMessage = "Select file(s) to upload.")]
[Display(Name = "Browse")]
public HttpPostedFileBase[] Files { get; set; }
[Display(Name = "File Type")]
public EFileType FileType{ get; set; }
}
У меня есть форма:
@using (Html.BeginForm("FileExchange", "General", FormMethod.Post, new { enctype = "multipart/form-data", id = "uploadform" }))
Метод в контроллере:
[HttpPost]
public async Task<ActionResult> FileExchange(FileUploadModel model)
{
await UploadFiles(model);
return View("FileExchange");
}
И я попробовал что-то вроде следующего в javascript / ajax:
<script>
$(document).ready(function () {
$("#preloader").hide(); //the wait indicator
$('#uploadform').on('submit', function (e) {
e.preventDefault();
var formdata = new FormData($('#uploadform').get(0));
$("#preloader").show();
var url = '@Url.Content("~/General/FileExchange/")'
//var dataModel = $(this).serialize();
$.ajax({
url: url,
type: "POST",
data: formdata,
processData: false,
contentType: false,
//dataType: "json",
success: function (resp) {
$("#preloader").hide();
},
error: function (resp) {
$("#preloader").hide();
}
});
});
})
</script>
Индикатор ожидания работает, НО метод не срабатывает.
Когда я добавляю модель в функцию «отправить»:
$('#uploadform').on('submit', model, function (e)
метод POST срабатывает, но индикатор ожидания перестал работать. Похоже, функция on submit больше не срабатывает.
Есть идеи, как решить эту проблему?