Я настроил загрузку кендо, как показано ниже.
@(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 сохраняют файл в файле сервера, создают запись в базе данных и возвращают следующую модель.
Id-long
FileName: fileName
Методы RemoveAttachments ожидают идентификаторы. Во время создания с пустыми существующими файлами у меня есть следующий обработчик событий, который обновляет файл, чтобы меня можно было удалить с помощью 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
}
}
Но с существующими файлами я не мог придумать способ обновить файл или назначить идентификатор из Model.Attachments в управление загрузкой.
Я могу установить имя с идентификатором во время инициализации, но таким образом я не могу правильно показать имя файла.
foreach (var f in Model.Attachments)
{
files.Add().Name(f.Id.ToString).Extension(Path.GetExtension(f.FileName));
}
Это покажет неправильное имя файла в пользовательском интерфейсе.