【问题标题】:Kendo Upload Duplicating File After Initial File Selection初始文件选择后剑道上传复制文件
【发布时间】:2019-01-31 19:30:30
【问题描述】:

我们正在使用 Telerik ASP.NET MVC VSExtensions 2019.1.116.1 并且有一个使用 Upload 控件的 MVC 应用程序。我们面临的问题是我们第一次打开上传控件并从文件资源管理器中选择一个文件时,它正在复制控件中的选定文件。

我们正在使用 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>

我们在$(document).ready中初始化kendo控件:

     $("#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();
        }
    };

不知道为什么第一次使用控件时它会重复,之后每次是否正常运行,或者为什么每次拖放都正常工作。

【问题讨论】:

    标签: javascript jquery asp.net-mvc kendo-ui kendo-upload


    【解决方案1】:

    您正在初始化上传小部件两次。我想这就是它表现得如此奇怪的原因。只需将所有初始化放入 Razor 代码中,然后将 $(document).ready 中的内容删除即可。

    【讨论】:

    • 是的,我意识到,在我发布之后,一旦我在 Razor 代码中完成了所有操作,它就会按预期工作,感谢您的确认!
    • 这个答案也解决了我的问题,但对我来说,我只是设置 localization 来设置 $(document).ready 中的选择文本
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    相关资源
    最近更新 更多