Kendo Upload异步上传时传递的元数据为Null,如何正确传参到后端?
问题原因
前端通过e.data传递的参数键名和后端接口的接收参数名不匹配:
- 前端上传时传递的参数键为
EntityID - 后端接口定义的接收参数名为
metaData
MVC模型绑定无法对应上两个不同名称的参数,因此获取到的值始终为null。
解决方法
方法1:修改后端参数名对齐前端
直接将后端接口的接收参数名改为和前端传递的键名一致即可:
[HttpPost] public ActionResult ChunkSave(IEnumerable<HttpPostedFileBase> files, string EntityID) { // 此处EntityID即可获取到前端传递的元数据值 }
方法2:修改前端传递的键名对齐后端
如果不想改动后端接口定义,调整前端onUpload方法里的参数键名即可:
function onUpload(e) { e.data = { metaData: document.getElementById("spanMatterName").textContent }; }
方法3:封装类接收多字段元数据(推荐)
如果后续需要传递多个元数据字段,建议单独封装元数据接收类,避免接口参数过多:
- 定义元数据接收类
public class UploadMetaData { public string EntityID { get; set; } // 可新增其他需要传递的元数据字段 }
- 调整接口参数类型
[HttpPost] public ActionResult ChunkSave(IEnumerable<HttpPostedFileBase> files, UploadMetaData metaData) { // 通过metaData.EntityID获取对应值 }
注意:当前你的分块上传配置无需额外调整,
upload事件会在每一次分块上传请求触发时都携带你设置的元数据,无需额外处理分块场景的参数传递。
内容的提问来源于stack exchange,提问作者Bokambo
相关产品推荐
相关产品推荐

