У меня есть элемент управления Telerik File Upload, настроенный для асинхронной загрузки файла в Ajax:
@(Html.Kendo().Upload()
.Name("fileUpload")
.Multiple(false)
.Async(a => a
.Save("AnalyzeFile", "Request")
.AutoUpload(true)
)
.Events(e => e.Success("onUploadOperationSuccess"))
.Validation(validation => validation.AllowedExtensions(new[] { ".csv" }))
.HtmlAttributes(new { style = "width:100%" }))
И для выполнения некоторых операций на основе ответа сервера в обработчике "onUploadOperationSuccess", чтобы показать Предварительный просмотр структуры файла для моего пользователя и позволяет ему выбрать несколько вариантов. Эта часть отлично работает.
Когда он это сделает, он выполнит настоящий «POST» для всей формы с помощью кнопки «Отправить». Моя проблема в том, что я хотел бы также загрузить файл в это время и иметь возможность получить его в коде Action, непосредственно со свойством Model или в объекте Request.
Форма определяется как эта :
@using (Html.BeginForm("Save", "Request", FormMethod.Post, new { @class = "form-horizontal", id = "requestForm", enctype="multipart/form-data" }))
{
...
<button id="finalSubmit" type="submit" class="k-button k-primary">Valider</button>
}
Проблема в том, что файл не загружается при отправке, только в Ajax. Я знаю, что это не проблема на стороне сервера, потому что в самом браузере я не вижу ничего, связанного с файлом в полезной нагрузке submit POST. Вероятно, из-за конфигурации Ajax элемента управления Telerik.
Конечно, я мог бы сохранить файл где-нибудь на сервере при первой загрузке (ajax), но так как он будет связан с некоторыми данными которые еще нигде не сохранены и которые я не хочу создавать на этом этапе, это не очень удобное решение.
Есть ли способ разместить файл на обоих POST (ajax + submit кнопка)?
Спасибо
Обновление: Я также писал на форуме Telerik , они ответили мне, что это невозможно. Они также перенаправили меня на { ссылка }, но это не решает первоначальный вопрос. Я поделюсь своим собственным решением ниже, как только оно будет реализовано.