我正在使用Kendo进行异步上传。我传递的元数据如下:
https://docs.telerik.com/kendo-ui/controls/editors/upload/metadata
<body>
<div id="example">
<div>
<div class="demo-section k-content">
<div id="FldUpload" style="width:100%;height:40%;">
<b>Matter ID : </b><span id="spanMatterName"></span><br />
<div><input name="files" id="folders" type="file" multiple /></div>
</div>
</div>
</div>
$("#folders").kendoUpload({
async: {
saveUrl: baseAddrs + "/" + "DragAndDrop/ChunkSave",
removeUrl: baseAddrs + "/" + "DragAndDrop/remove",
chunkSize: 10530000, //~ 10MB
autoUpload: true,
concurrent: true
},
upload: onUpload,
directory: true,
directoryDrop: true,
});
function onUpload(e) {
e.data = {
EntityID: document.getElementById("spanMatterName").textContent
};
alert(e.data.EntityID); // It has correct value
}
//Codebehind
[HttpPost]
public ActionResult ChunkSave(IEnumerable<HttpPostedFileBase> files, string metaData)
{
//Here metadata is always null
}
为什么元数据为空?我如何将(e.data(的元数据值传递给codeheadPOST方法?
我修复了它。参数名称应该与您在e.data中传递的名称完全相同。在我的情况下,它是EntityID,但我在post方法中声明变量为字符串元数据:
e.data = {
EntityID: document.getElementById("spanMatterName").textContent
};
It should be
[HttpPost]
public ActionResult ChunkSave(IEnumerable<HttpPostedFileBase> files, string EntityID)
{
}