Ich versuche, eine Datei mit Kendo Grid
hochladen, mit Kendo Upload
ist keine Option, weil Modell und die Datei verwandt sind und Upload kann nicht separat passieren.Anhängen Datei in Kendo Grid
Ich habe zwei Optionen in Betracht gezogen, mit einem Feld im Modell und setzen Sie es im save
Ereignis. Und Empfangen dieser Datei als ein Argument in der action method
und unter Verwendung Data
Methode von update
und create
Konfigurationen. Beide Möglichkeiten enden mit clientseitigen Ausnahmen wie JavaScript runtime error: Argument not optional
.
Ich werde dankbar sein, wenn Sie mich damit führen könnten.
Action method
Signatur:
public async Task<ActionResult> Update([DataSourceRequest] DataSourceRequest request, myViewModel model, HttpPostedFileBase file)
Client-Seite Funktionen:
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
};
};
Grid-Konfiguration:
@(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")
)
)
Ich bin auch Kendo Upload
separat und verwenden Sie die Dateinamen zu verwenden versuchen, in das Gittermodell wie in this example, t Das Problem ist, dass das Upload-Objekt keine Funktionen hat, files
und getFiles
sind undefiniert.