You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MVC中如何将视图模型Guid值传递给Upload控制器ChunkSave方法

问题:Kendo Upload分块上传时无法传递Guid参数到控制器

我有一个文件上传控制器,作为包含Kendo Core MVC Upload控件的EditorTemplate后端,需要让EditorTemplate独立运行并传递Guid类型的记录ID来维持关联。当前上传时,请求能正常到达ChunkSave方法,但添加的Guid? idCode参数始终无法获取到视图模型里的Guid值。


解决方案

方法1:通过Upload的additional-data传递参数

利用Kendo Upload的additional-data配置,通过JS动态获取Guid值并作为额外参数传递,分块请求会自动带上该参数。

修改EditorTemplate代码:

@model Guid?

@{
    string[] extensions = { ".jpg", ".png", ".pdf", ".ppt", ".pptx", ".doc", ".docx", ".xls", ".xlsx" };
}

@Html.HiddenFor(m => m, new { id = "idCodeHidden" })

<kendo-upload name="letterFiles" multiple="true">
    <async save-url="@Url.Action("ChunkSave","Upload")"
           remove-url="@Url.Action("Remove","Upload")"
           auto-upload="true"
           chunk-size="11000"
           additional-data="additionalData" />
    <validation allowed-extensions="@extensions" max-file-size="36700160" />
</kendo-upload>

<script>
    function additionalData() {
        return {
            idCode: $("#idCodeHidden").val()
        };
    }
</script>

方法2:在SaveUrl中直接拼接Guid参数

如果Guid值在渲染EditorTemplate时已确定,可直接将其拼接到请求Url中,分块请求会自动携带该查询参数。

修改EditorTemplate中的Async配置:

<async save-url="@Url.Action("ChunkSave","Upload", new { idCode = Model })"
       remove-url="@Url.Action("Remove","Upload")"
       auto-upload="true"
       chunk-size="11000" />

额外注意事项

  • 检查@Html.HiddenFor(m => m)生成的隐藏输入框是否包含正确的Guid值,可通过浏览器开发者工具验证。
  • 若使用方法1,需确保隐藏控件ID唯一,避免页面元素冲突。
  • 控制器ChunkSave方法中的idCode参数无需添加[Bind(Prefix)],因为它是独立传递的参数。

内容的提问来源于stack exchange,提问作者DoomerDGR8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 10:45:28