如何在Dropzone.js中发送在运行时计算的params值

时间:2018-04-06 02:56:01

标签: asp.net-mvc dropzone.js

我在asp.net核心应用程序中有一个非常基本的Dropzone:

                       <div class="panel-body " id="dropzone">
                            <form asp-action="Upload" class="dropzone 
                                 needsclick dz-clickable" id="uploader">
                                <div class="dz-message needsclick">
                                    Drop files here or <a class="btn btn- 
                                           primary">click</a> to upload.<br>
                                </div>
                            </form>
                        </div>

我正在尝试在配置中设置一个params值,因为在某些情况下有一个selectlist,用户选择一个必须传递给MVC控制器的值。 param总是为null,我感觉这是因为我设置配置的方式:

 $(document).ready(function () {

        Dropzone.options.uploader = {
            acceptedFiles: ".csv, .xls, .xlsx",
            init: function () {
                this.on("error", function (file) {
                    if (!file.accepted) alert("csv, xls, and xlsx files only. File not uploaded");
                    this.removeFile(file);
                });
            },
            params: { orgId: $('#orglist').val()}
        };

我猜我的params值是在doc准备好的时候再计算的。如何在拖动实际文件时传递当前选择的值?

1 个答案:

答案 0 :(得分:0)

我找到的答案是在send函数中添加一个监听器并删除params选项,并在我的控制器操作中附加一个新参数orgID:

Dropzone.options.uploader = {
            acceptedFiles: ".csv, .xls, .xlsx",
            init: function () {
                this.on("error", function (file) {
                    if (!file.accepted) alert("csv, xls, and xlsx files only. File not uploaded");
                    this.removeFile(file);
                });
                this.on("sending", function (file, xhr, formData) {
                    formData.append("orgId", $('#orglist').val())
                })
            }