我有一个使用HttpPostedFileBase的默认活页夹绑定模型和文件上传的表单。
使用Html.BeginForm()时,此方法工作正常。但是,我想使用AJAX执行相同的操作,因此我将其替换为Ajax.BeginForm()并相应地更改了参数。
该模型仍然可以正确绑定,但是我无法将文件上传绑定到HttpPostedFileBase。
这将绑定模型和文件上传:
<% using (Html.BeginForm("MapUpdateColumns", "RepositoryAdmin", FormMethod.Post, new { id = "UpdateDataset", enctype = "multipart/form-data" })) {%>
这仅绑定模型:
<% using (Ajax.BeginForm("MapUpdateColumns", "RepositoryAdmin", new AjaxOptions { UpdateTargetId = "columnMappings" }, new { id = "UpdateDataset", enctype = "multipart/form-data" })) {%>
控制器动作:
public ActionResult MapUpdateColumns(DatasetViewModel model, HttpPostedFileBase sourceFile)
应该可以吗?如果可以,我在做什么错?谢谢。
您无法使用AJAX上传文件。实现此目的的一种方法是使用隐藏的iframe,该iframe将模拟AJAX调用并执行实际的文件上传或使用Flash。这是一个非常好的jQuery Form插件,它使用隐藏的iframe,能够透明地将包含文件字段的表单提交修改为ajax。