我们正在使用Telerik ASP.NET MVC VSExtensions 2019.1.116.1,并且具有使用Upload控件的MVC应用。我们面临的问题是我们第一次打开上传控件并从文件资源管理器中选择一个文件,它正在复制控件中的所选文件。
我们正在使用async选项,它将一次进入我们的控制器来处理文件,但是它两次显示相同的文件。它在第一个文件上将状态设置为成功,但是由于“ Uploading”图标一直显示,并且从未将其发送到控制器,因此它永远不会关闭。
如果我们关闭此控件,然后重新单击按钮以打开控件并选择一个文件,它将仅显示一次文件,然后调用控制器来处理该文件并按预期工作。
此外,如果我们重新加载页面,然后使用拖放操作,它会按预期工作,因此这只是我们第一次加载页面并单击“选择文件”按钮,它会复制显示的文件。
我们使用一个隐藏的“ 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)中初始化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();
}
};
不确定为什么第一次使用该控件会重复,并且此后每次都能正常运行,或者为什么每次拖放都能正常工作。
答案 0 :(得分:0)
您要初始化上传小部件两次。我想这就是它表现得如此奇怪的原因。只需将所有初始化都放入Razor代码中,然后从$(document).ready
中删除内容即可。