ASP.NET MVC中Dropzone上传时控制器List<IFormFile>接收值为0如何解决
问题修复方案
问题1:paramName配置错误(核心原因)
你当前的paramName配置是无返回值的匿名函数,Dropzone无法识别正确的表单字段名,导致后端无法匹配到files参数:
// 错误写法:没有return返回值 paramName: function () { "files" },
直接修改为字符串赋值即可:
paramName: "files",
如果需要保留函数写法,必须补充return语句:
paramName: function() { return "files"; },
问题2:Dropzone JS文件重复引入冲突
你同时引入了dropzone.js和dropzone-amd-module.js,后者仅适用于AMD模块化加载场景,普通页面重复引入会导致实例初始化异常,就是你遇到的页面加载时报URL未配置的错误,删除多余引用即可:
<!-- 移除这行引用 --> <script type="text/javascript" src="~/js/dropzone-amd-module.js"></script>
问题3:控制器绑定优化
可以给参数加上[FromForm]特性,显式指定从表单数据源绑定,避免其他绑定源的优先级干扰:
[HttpPost] public IActionResult SaveUploadedFile([FromForm] List<IFormFile> files) { //do stuff }
可选优化:提交逻辑调整
你当前提交逻辑中,无队列文件时直接调用form提交,此时如果有已上传完成的文件不会被携带,建议删除多余的else分支逻辑,仅保留队列处理即可:
$('#Submit').on("click", function (e) { e.preventDefault(); e.stopPropagation(); if (self.getQueuedFiles().length > 0) { self.processQueue(); } });
内容的提问来源于stack exchange,提问作者Luciano Nascimento
相关产品推荐
相关产品推荐

