Мы используем Telerik ASP.NET MVC VSExtensions 2019.1.116.1 и имеем приложение MVC, использующее элемент управления Upload.Проблема, с которой мы сталкиваемся, - это когда мы впервые открываем элемент управления загрузкой и выбираем файл из проводника, он дублирует выбранный файл в элементе управления.
Мы используем опцию async, и он один раз обращается к нашему контроллеру для обработки файла, но он отображает один и тот же файл дважды.Он устанавливает статус «Успешно» в первом файле, но никогда не закрывается, так как значок «Загрузка» продолжает отображаться, а «второй» файл никогда не отправляется в контроллер.
Если мы закроем этот элемент управления, а затем повторно нажмем кнопку, чтобы открыть элемент управления и выбрать файл, он отобразит файл только один раз и вызовет контроллер для обработки файла и будет работать как положено.
Также, если мы перезагрузим страницу, а затем используем перетаскивание, она работает как положено, поэтому только при первой загрузке страницы и нажатии кнопки «Выбрать файлы» дублируется отображаемый файл.
Мы используем скрытый "div" для элемента управления загрузкой и связанного текста / кнопок, а затем у нас есть кнопка, которая отображает этот div.
<div id="cdpUploadScheduleEvents" style="display: none; border-style:solid">
<p class="panel panel-info">
Please select the file.
</p>
@(Html.Kendo().Upload().Name("files"))
<div style="width: 15%; margin: auto;">
<button id="closeUploadBtn"class="button btn4 center-block btn-block" onClick="CloseUploadPane()">Close</button>
</div>
</div>
Мы инициализируем элемент управления kendo в $ (document) .ready:
$("#files").kendoUpload({
multiple: false,
async: {
saveUrl: '@Url.Action("UploadFile", "MyCtl", new {masterId = @Model.masterId})',
removeUrl: '',
autoUpload: true
},
error: onKendoError,
complete: onKendoComplete,
upload: onKendoUpload,
select : onKendoSelect,
validation: {
allowedExtensions: [".csv", ".xls", ".xlsx"]
}
});
Вот мой OnSelect, и у меня есть предупреждение, которое отображает количество файлов, и оно всегда показывает, что выбран 1 файл:
function onKendoSelect(e) {
var selectedFiles = e.files.length;
alert('Files selected ' + selectedFiles);
if (selectedFiles > 1) {
$(".k-upload-files > li:eq(1)").remove();
}
};
Не уверен, почему при первом использовании элемента управления он дублируется и каждый раз после этого работает правильно или почему Drag & Drop работает правильно каждый раз.