带有一些其他参数的 Dropzone
Dropzone with some other parameters
我使用 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>
jQuery代码:
<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" />
然后
public ActionResult SaveProducts(string SomeVal)
{
..controller body
}
或者 FormCollection 对象也可以工作
public ActionResult SaveProducts(FormCollection fc)
{
//use fc["SomeVal"]
..controller body
}
您可以创建模型
public class ProductModel {
public string Name {get;set;}
}
在表格内添加 Name
<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>
并在 Action 中传递 Model
,来自输入的值将与文件一起发送。
public ActionResult SaveProducts(ProductModel product)
{
// rest of the logic
我找到了 problem.Here 的解决方案,我已将其粘贴以备将来 help.There 在 DropZone 中的一个名为 sending
的事件。您可以通过追加传递附加参数以形成数据。
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)
{
}
我使用 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>
jQuery代码:
<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" />
然后
public ActionResult SaveProducts(string SomeVal)
{
..controller body
}
或者 FormCollection 对象也可以工作
public ActionResult SaveProducts(FormCollection fc)
{
//use fc["SomeVal"]
..controller body
}
您可以创建模型
public class ProductModel {
public string Name {get;set;}
}
在表格内添加 Name
<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>
并在 Action 中传递 Model
,来自输入的值将与文件一起发送。
public ActionResult SaveProducts(ProductModel product)
{
// rest of the logic
我找到了 problem.Here 的解决方案,我已将其粘贴以备将来 help.There 在 DropZone 中的一个名为 sending
的事件。您可以通过追加传递附加参数以形成数据。
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)
{
}