Я использую Kendo UI MVC Upload control для загрузки нескольких файлов одновременно (например, партии). В документации достаточно ясно, что делать, но я вижу отдельные запросы на загрузку для каждого файла, а не для одиночного запроса на загрузку для всех.Kendo MVC Upload - Batch Upload
Вот мой код для контроля загрузки
Html.Kendo().Upload().Name("files")
.TemplateId("fileUploadTemplate")
.Events(e =>
{
e.Upload("onFileUpload");
})
.HtmlAttributes(new { accept = ".xls,.csv" })
.Messages(m => m.Select("Select Files..."))
.Async(a => a.Save("Upload", "Home").AutoUpload(false).Batch(true))
Я использую шаблон кендо, чтобы добавить еще 2 поля (начало & даты окончания) против каждого загруженного файла, как показано ниже.
Вот код шаблона.
<script id="fileUploadTemplate" type="text/x-kendo-template">
#var fileCount = $(".k-file .row").length;#
#var startId = 'PeriodStart_' + fileCount; #
#var endId = 'PeriodEnd_' + fileCount; #
<span class="k-progress"></span>
<div class="row">
<div class="col-md-4">
<span class="k-filename"><strong>#=name#</strong></span>
</div>
<div class="col-md-3 nopadding">
Start: @(Html.Kendo().DatePicker().Name("#=startId#").ToClientTemplate())
</div>
<div class="col-md-3 nopadding">
End: @(Html.Kendo().DatePicker().Name("#=endId#").ToClientTemplate())
</div>
<div class="col-md-1 text-right">
<button type="button" class="k-upload-action"></button>
</div>
</div></script>
Вот обработки событий JS код, который собирает Start & дату окончания для каждого файла и создает объект JSON для отправки в бэкэнд вместе с несколькими файлами.
function onFileUpload(e) {
var fileInfo = getUploadFileMetaData();
var modelAsJson = JSON.stringify(fileInfo);
console.log(modelAsJson);
e.data = {
modelAsJson: modelAsJson
};
}
function getUploadFileMetaData() {
var numOfFiles = $(".k-file .row").length;
var fileInfoArray = [];
for (var i=0; i<numOfFiles;i++){
var fi = {
FileName: $(".k-filename strong")[i].innerText, //Filename is required as is since it'll be our key
PeriodStart: $("#PeriodStart_" + i).data('kendoDatePicker').value(),
PeriodEnd: $("#PeriodEnd_" + i).data('kendoDatePicker').value()
}
fileInfoArray[i] = fi;
}
return fileInfoArray;
}
Так, если выбрать 2 файлов для загрузки я вижу 2 различных запросов обжигали в контроллер действий вместо 1. Я уверен, что я не вижу что-то прямо вперед и оценить любое шоу и сказать.
Я упростил все это много и до сих пор поведение не как ожидалось. Вот очень простой элемент управления загрузкой, который пытается загрузить несколько файлов в виде одной партии. 'Html.Kendo(). Upload(). Name (" filesTest "). Async (a => a.Save (" UploadTest "," Home "). AutoUpload (false) .Batch (true))' – Uchitha
I ' м с использованием версии Kendo.MVC - 2014.2.716.545 – Uchitha