Kendo Upload Duplicating File после первоначального выбора файла - PullRequest
0 голосов
/ 31 января 2019

Мы используем Telerik ASP.NET MVC VSExtensions 2019.1.116.1 и имеем приложение MVC, использующее элемент управления Upload.Проблема, с которой мы сталкиваемся, - это когда мы впервые открываем элемент управления загрузкой и выбираем файл из проводника, он дублирует выбранный файл в элементе управления.

Мы используем опцию async, и он один раз обращается к нашему контроллеру для обработки файла, но он отображает один и тот же файл дважды.Он устанавливает статус «Успешно» в первом файле, но никогда не закрывается, так как значок «Загрузка» продолжает отображаться, а «второй» файл никогда не отправляется в контроллер.

Если мы закроем этот элемент управления, а затем повторно нажмем кнопку, чтобы открыть элемент управления и выбрать файл, он отобразит файл только один раз и вызовет контроллер для обработки файла и будет работать как положено.

Также, если мы перезагрузим страницу, а затем используем перетаскивание, она работает как положено, поэтому только при первой загрузке страницы и нажатии кнопки «Выбрать файлы» дублируется отображаемый файл.

Duplicate displayed file

Мы используем скрытый "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 работает правильно каждый раз.

1 Ответ

0 голосов
/ 01 февраля 2019

Вы инициализируете виджет загрузки дважды.Я полагаю, именно поэтому он так странно себя ведет.Просто поместите всю инициализацию в код Razor и удалите содержимое из $(document).ready.

...