Я пытаюсь загрузить файл с помощью Kendo Grid
, используя Kendo Upload
, не является вариантом, потому что модель и файл связаны, и загрузка не может произойти отдельно.Добавление файла в Kendo Grid
Я рассмотрел два варианта, имея поле HttpPostedFileBase
в модели и установив его в событии save
. И получение этого файла в качестве аргумента в action method
и использование Data
метода update
и create
конфигураций. Оба эти способа будут в конечном итоге с клиентскими kendo
исключениями, такими как JavaScript runtime error: Argument not optional
.
Буду признателен, если вы позволите мне с этим связаться.
Action method
подпись:
public async Task<ActionResult> Update([DataSourceRequest] DataSourceRequest request, myViewModel model, HttpPostedFileBase file)
стороне клиента функции:
var descRes = new function() {
this.onSave = function (e) {
var u2 = $('#upload2');
var data = new FormData();
var files = $('#upload2').get(0).files;
if (files.length > 0)
data.append('file', files[0]);
e.model.set('ImageFile', files[0]); // I have tried to set it to `data` too
};
this.getFile = function (e) {
var data = new FormData();
var files = $('#upload2').get(0).files;
if (files.length > 0)
data.append('file', files[0]);
return { file: data };
// return data; // I have also tried this, or returning `files[0]` directly
};
};
Конфигурации заземляющего по:
@(Html.Kendo().Grid<viewModel>()
.Name("grid")
// removed for brevity
.Editable(e => e.Mode(GridEditMode.InLine))
.Events(e => e
.Save("descRes.onSave")
)
.DataSource(ds => ds
.Ajax()
.Model(m =>
{
m.Id(x => x.Id);
})
.Read(r => r.Action("Read", "AssetRes").Data("descRes.readData"))
.Create(c => c.Action("Create", "AssetRes").Data("descRes.getFile"))
.Update(u => u.Action("Update", "AssetRes").Data("descRes.getFile"))
.Destroy("Delete", "AssetRes")
)
)
Я также пытаюсь использовать Kendo Upload
отдельно и использовать имя файла в модель сетки, как в this example, t проблема заключается в том, что объект загрузки не имеет никаких функций, files
и getFiles
не определены.