我正在尝试在 ASP.Net MVC 中实现 Dropzone.js。我尝试了一切,但不知何故我无法在 Controller 中接收删除的文件。该变量只是 NULL。
我的 View 如下所示:
<h2>DropZoneUp</h2>
<form action='@Url.Action("DropZoneUpload")'class="dropzone"id="my-awesome-dropzone">
</form>
<script src="~/Scripts/dropzone.js"></script>
我的 Controller 如下所示:
[HttpPost]
public ActionResult DropZoneUpload(IEnumerable<HttpPostedFileBase> files)
{
foreach (var file in files)
{
string filePath = Guid.NewGuid() + Path.GetExtension(file.FileName);
file.SaveAs(Path.Combine(Server.MapPath("~/ExcelNDropUpload"), filePath));
}
return Json("fileupload successfully");
}
Controller 实际上是从 View 调用的。但“IEnumerable 文件”为空。 有人知道我做错了什么吗?
提前致谢!
最诚挚的问候 mustache 熊
最佳答案
听起来您忘记包含 enctype="multipart/form-data"
属性并使用 method="post"
因为目标 Controller 操作具有 HttpPostAttribute
(默认情况下,如果您未在表单标记中指定 HTTP 方法,它将 sets as GET )。正确的代码应该是这样的:
<form action='@Url.Action("DropZoneUpload")' class="dropzone" id="my-awesome-dropzone" enctype="multipart/form-data" method="post">
<!-- other form elements -->
</form>
或者使用BeginForm
帮助器:
@using (Html.BeginForm("DropZoneUpload", "ControllerName", FormMethod.Post, new { @class = "dropzone", id = "my-awesome-dropzone", enctype = "multipart/form-data" }))
{
@* other form elements *@
}
如果您想将任何文件与其他输入元素值一起发布,则需要 multipart/form-data
。
关于javascript - ASP.Net MVC 中的简单 Dropzone 实现 - 如何获取 Controller 中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52310370/