ASP.Net MVC 中的简单 Dropzone 实现 - 如何在控制器中获取数据?

Simple Dropzone implementation in ASP.Net MVC - How can I get data in the Controller?

我正在尝试在 ASP.Net MVC 中实现 Dropzone.js。我尝试了一切,但不知何故我无法在控制器中接收到丢弃的文件。该变量只是 NULL。

我的视图如下所示:

    <h2>DropZoneUp</h2>
    <form action='@Url.Action("DropZoneUpload")'class="dropzone"id="my-awesome-dropzone">
    </form>
    
    <script src="~/Scripts/dropzone.js"></script>

我的控制器看起来像这样:

[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");
}

控制器实际上是从视图中调用的。但是 "IEnumerable files" 是空的。 有人知道我做错了什么吗?

提前致谢!

此致 大熊熊

如果您 post 您的 post/submit 那种形式的方法,那就太好了。 我发现有些人试图和你做同样的事情,你可以尝试参考这个问题:

听起来你忘记包含 enctype="multipart/form-data" 属性并使用 method="post" 因为目标控制器操作有 HttpPostAttribute (默认情况下,如果你没有在表单标签它将 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 *@
}

如果您想 post 任何文件连同其他输入元素值,multipart/form-data 是必需的。