小编典典

使用Ajax.BeginForm绑定HttpPostedFileBase

ajax

我有一个使用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)

应该可以吗?如果可以,我在做什么错?谢谢。


阅读 273

收藏
2020-07-26

共1个答案

小编典典

您无法使用AJAX上传文件。实现此目的的一种方法是使用隐藏的iframe,该iframe将模拟AJAX调用并执行实际的文件上传或使用Flash。这是一个非常好的jQuery
Form
插件,它使用隐藏的iframe,能够透明地将包含文件字段的表单提交修改为ajax。

2020-07-26