Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Dropzone具有一些其他参数_C#_Jquery_Asp.net Mvc_Dropzone.js - Fatal编程技术网

C# Dropzone具有一些其他参数

C# Dropzone具有一些其他参数,c#,jquery,asp.net-mvc,dropzone.js,C#,Jquery,Asp.net Mvc,Dropzone.js,我使用Dropzone上传图像。我需要通过它发送一些其他值(一些文本值)。在我的场景中,我需要将产品名称发送给控制器(请参阅代码中的一些注释) 当按钮单击时,图像成功到达控制器侧 HTML代码: <input type="text" name="text" id="txtprod" class="form-control" /> <div id="dropzonffe" style="width: 55%; margin-left: 25%"> <form

我使用Dropzone上传图像。我需要通过它发送一些其他值(一些文本值)。在我的场景中,我需要将产品名称发送给控制器(请参阅代码中的一些注释)

当按钮单击时,图像成功到达控制器侧

HTML代码:

<input type="text" name="text" id="txtprod" class="form-control" />

<div id="dropzonffe" style="width: 55%; margin-left: 25%">
    <form action="~/Admin/SaveProducts" class="dropzone" id="dropzoneJsForm"></form>
</div>
<script type="text/javascript">
Dropzone.options.dropzoneJsForm = {

    autoProcessQueue: false,
    init: function () {
        var submitButton = document.querySelector("#btnSubmit");
        var myDropzone = this;

        submitButton.addEventListener("click", function () {
            var ProductName = $("#txtprod").val();//<-- I want to send this Productname to the controller also.
            myDropzone.processQueue();
        });
    }
};
</script>
public ActionResult SaveProducts () {
    bool isSavedSuccessfully = false;

    foreach (string fileName in Request.Files) {
        HttpPostedFileBase file = Request.Files[fileName];
        isSavedSuccessfully = true;
    }
    return Json (new { isSavedSuccessfully, JsonRequestBehavior.AllowGet });
}

我需要将产品名称传递给控制器。如何操作?

将值作为隐藏字段添加到表单中,并将其发送到控制器

<form action="~/Admin/SaveProducts" class="dropzone" id="dropzoneJsForm">
    <input type="hidden" value="SomeVal" />
或者FormCollection对象也可以工作

public ActionResult SaveProducts(FormCollection fc) 
{
     //use fc["SomeVal"]
   ..controller body
}
您可以创建一个模型

public class ProductModel {
    public string Name {get;set;}
}
在表单中添加
名称

<div id="dropzonffe" style="width: 55%; margin-left: 25%">
    <form action="~/Admin/SaveProducts" class="dropzone" id="dropzoneJsForm">
        @Html.EditorFor(m => m.Name);
    </form>
</div>
<button id="btnSubmit">Submit</button>

我找到了问题的解决方案。我在这里粘贴它以备将来使用。DropZone中有一个名为“发送”的事件。您可以通过“附加到表单数据”传递其他参数

 Dropzone.options.dropzoneJsForm = {
    autoProcessQueue: false,
    init: function () {
        var submitButton = document.querySelector("#btnSubmit");
        var myDropzone = this;

        this.on("sending", function (file, xhr, formData) {
            formData.append("ProductName", $("#txtprod").val());


        });

        submitButton.addEventListener("click", function () {
        myDropzone.processQueue();

        });

    }
};
在服务器端访问它

 public ActionResult SaveProducts(string ProductName)
    {

     }

您是否尝试添加formcollection?public ActionResult保存产品(FormCollection fc){…}但是在这里你使用Html助手控件(@Html)知道吗?我使用文本框。我怎么能这样做。。请看更新OP@Alex在您的情况下,将是
,我多年来一直努力获得这项工作,直到我最终获得了正确的配置。我不确定我到底做错了什么,但现在它很有魅力。如何进行多次上传。它将有多个ProductName参数?
 Dropzone.options.dropzoneJsForm = {
    autoProcessQueue: false,
    init: function () {
        var submitButton = document.querySelector("#btnSubmit");
        var myDropzone = this;

        this.on("sending", function (file, xhr, formData) {
            formData.append("ProductName", $("#txtprod").val());


        });

        submitButton.addEventListener("click", function () {
        myDropzone.processQueue();

        });

    }
};
 public ActionResult SaveProducts(string ProductName)
    {

     }