如何让HttpPostedFileBase与Ajax.BeginForm一起使用?

时间:2017-08-18 14:56:11

标签: javascript ajax html5 asp.net-mvc-5

我正在尝试使用带有HttpPostedFileBase的Ajax.BeginForm来上传文件。在尝试跟踪问题时,我正在使用表单元素的呈现版本。

我在2个应用程序中使用完全相同的代码。除了这段代码之外什么都没有的虚拟程序,以及我希望嵌入文件上传代码的实际应用程序。在虚拟应用程序中,这个ajax代码可以完美地将文件发送到控制器。在实际的企业应用程序中,此代码仅起作用 如果data-ajax =“true”没有关闭,否则AttachmentFile为null。因此,它作为html表单提交。它不能作为ajax提交。

任何人都可以告诉我为什么HttpPostFileBase在我的虚拟mvc解决方案中与Ajax一起工作,而不是在我的全面公司应用程序中?

我花了几天时间在堆栈溢出中并在我的应用程序中尝试不同的东西。没有任何效果。所以我要求帮助,如果有人有经验,项目中的设置会阻止HttpPostFileBase使用Ajax。

_layout.cshtml
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>@ViewBag.Title - My ASP.NET Application</title>
        @Styles.Render("~/Content/css")
        @Styles.Render("~/Content/app")
        @RenderSection("scripts", required: false)
    </head>
    <body>
        <div>
            @RenderBody()
        </div>
        @Scripts.Render("~/bundles/jquery")
        @Scripts.Render("~/bundles/jqueryui")
        @Scripts.Render("~/bundles/bootstrap")
        @Scripts.Render("~/bundles/app")
        @Scripts.Render("~/bundles/modernizr")
    </body>
    </html>

Index.cshtml    
    @{
        ViewBag.Title = "Web6 Home Page";
    }
    <form id="form0" action="/Home/Index" enctype="multipart/form-data" method="post" novalidate="novalidate" data-ajax="true" >
        <input name="AttachmentFile" type="file" />
        <input id="FileUploadBtn" type="submit" value="Upload" />
    </form>

Home.cs    
    [HttpPost]
    public ActionResult Index(HttpPostedFileBase AttachmentFile)
    {
        //if (AttachmentFile.ContentLength > 0)
        //{
        //    var fileName = Path.GetFileName(AttachmentFile.FileName);
        //    var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
       //    AttachmentFile.SaveAs(path);
       //}

       return RedirectToAction("Index"
    }

0 个答案:

没有答案