0
我试图上传文件使用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
未定义。