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

Posted

技术标签:

【中文标题】ASP.Net MVC 中的简单 Dropzone 实现 - 如何在控制器中获取数据?【英文标题】:Simple Dropzone implementation in ASP.Net MVC - How can I get data in the Controller? 【发布时间】:2019-02-17 23:48:15 【问题描述】:

我正在尝试在 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 文件”为空。 有人知道我做错了什么吗?

提前致谢!

最好的问候 熊熊

【问题讨论】:

尝试像这样添加multipart/form-data&lt;form action='@Url.Action("DropZoneUpload")' class="dropzone" id="my-awesome-dropzone" enctype="multipart/form-data"&gt; 嘿 Tetsuya,谢谢你的回答。但它仍然是空的。还有其他建议吗? 您是否已将autoDiscover = falseautoProcessQueue: false 设置为您的Dropzone 实例?检查here是否有可能的配置(如果可以的话,也提供相关的JS代码)。 【参考方案1】:

听起来您忘记包含enctype="multipart/form-data" 属性并使用method="post",因为目标控制器操作具有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 是必需的。

【讨论】:

【参考方案2】:

如果您发布该表单的发布/提交方法,那就太好了。 我发现有些人试图做和你一样的事情,你可能会尝试参考这个问题: upload-multiple-files-in-one-request-dropzone-sending-two-requests

【讨论】:

以上是关于ASP.Net MVC 中的简单 Dropzone 实现 - 如何在控制器中获取数据?的主要内容,如果未能解决你的问题,请参考以下文章

DropzoneJS使用ASP.NET MVC删除文件

在 asp.net 中使用 dropzone.js

ASP.NET MVC 5 中的简单角色管理器和授权,无需使用 Identity(CustomRoleProvider)

C# asp.net MVC3 中的日历控件

Asp.net mvc和asp.net有啥区别?

ASP.NET Core 配置 MVC - ASP.NET Core 基础教程 - 简单教程,简单编程