我有一个表单,它使用 HttpPostedFileBase 的默认绑定(bind)器绑定(bind)模型和文件上传。
使用 Html.BeginForm() 时效果很好。但是,我想使用 AJAX 执行相同的操作,因此我将其替换为 Ajax.BeginForm() 并相应地更改参数。
模型仍然正确绑定(bind),但是我无法将文件上传绑定(bind)到 HttpPostedFileBase。
这会绑定(bind)模型和文件上传:
<% using (Html.BeginForm("MapUpdateColumns", "RepositoryAdmin", FormMethod.Post, new { id = "UpdateDataset", enctype = "multipart/form-data" })) {%>
这只绑定(bind)模型:
<% using (Ajax.BeginForm("MapUpdateColumns", "RepositoryAdmin", new AjaxOptions { UpdateTargetId = "columnMappings" }, new { id = "UpdateDataset", enctype = "multipart/form-data" })) {%>
Controller 操作:
public ActionResult MapUpdateColumns(DatasetViewModel model, HttpPostedFileBase sourceFile)
这应该可行吗?如果可以的话我做错了什么?谢谢。
最佳答案
您无法使用 AJAX 上传文件。实现此目的的一种方法是使用隐藏的 iframe,它将模拟 AJAX 调用并执行实际的文件上传或使用 Flash。这是一个非常好的jQuery Form使用隐藏 iframe 的插件能够透明地 ajax 化包含文件字段的表单提交。
关于asp.net-mvc - 使用 Ajax.BeginForm 绑定(bind) HttpPostedFileBase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2491230/