我正在尝试使用带有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"
}