我已经设置剑道上传如下。
@(Html.Kendo().Upload().Name("files")
.Async(a => a
.Save("UploadAttachments", "Mycontroller")
.Remove("RemoveAttachments", "Mycontroller")
.SaveField("files")
.RemoveField("ids")
.AutoUpload(true))
.Events(e => e
.Success("onUploadSuccess")
.Error("onUploadError"))
.Files(files =>
{
foreach (var f in Model.Attachments)
{
files.Add().Name(f.FileName).Extension(Path.GetExtension(f.FileName));
}
}))
UploadAttachments 方法将文件保存在服务器文件中并在 db 中创建记录并返回以下模型
Id-long
FileName: fileName
RemoveAttachments 方法需要 id。在使用空现有文件创建期间,我有以下事件处理程序,它更新文件,以便可以使用 id 删除我。
function onUploadSuccess(e) {
if (e.operation == "upload") {
e.files[0].data = e.response[0]; // hold the attachment detail
e.files[0].name = e.response[0].Id; // change name with id so it can be passed to remove method
}
}
但是对于现有文件,我想不出更新文件或将 ID 从 Model.Attachements 分配到上传控件的方法。
我可以在初始化期间使用 id 设置名称,但这样我就无法正确显示文件名。
foreach (var f in Model.Attachments)
{
files.Add().Name(f.Id.ToString).Extension(Path.GetExtension(f.FileName));
}
这将在 UI 中显示错误的文件名。