asp.net-mvc - 使用 Ajax.BeginForm 绑定(bind) HttpPostedFileBase

标签 asp.net-mvc ajax model-binding

我有一个表单,它使用 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/

相关文章:

javascript - 在 JavaScript 中检索 Controller 值

c# - 捕获显示信息的异常

ajax - ajax请求后jquery双消息

c# - ASP.NET MVC 默认绑定(bind)器 : too long ints, 空验证错误消息

asp.net-mvc - 模型仅绑定(bind)所选项目的列表

asp.net-mvc - 如何将用户重定向到特定 Controller asp.net mvc 的操作方法

asp.net-mvc - 如何根据区域将未经授权的用户重定向到登录页面?

php - 如何在一个页面上运行多个ajax调用

php - ajax响应消息唯一标识符

c# - WebAPI : custom parameter mapping