在ASP.NET MVC中,无法在同一个Ajax Post调用中同时上传信息和文件,因为默认情况下,浏览器不允许在同一个请求中同时发送Form Data和文件。
解决这个问题的一种常见方法是使用FormData对象,将表单数据和文件分开发送。以下是一个示例代码,演示如何在同一个Ajax Post调用中上传信息和文件:
HTML代码:
JavaScript代码:
function uploadData() {
var formData = new FormData();
formData.append("name", $("#name").val());
formData.append("file", $("#file")[0].files[0]);
$.ajax({
url: "/Controller/Action",
type: "POST",
data: formData,
contentType: false,
processData: false,
success: function (result) {
// 处理成功后的操作
},
error: function (xhr, status, error) {
// 处理错误
}
});
}
在上述代码中,我们使用了FormData对象,将文本字段的值和文件对象添加到formData中。然后,我们将formData作为data参数传递给ajax方法,并设置contentType为false,processData为false,以便正确处理文件上传。
在服务器端的Controller中,你可以使用以下代码来接收上传的信息和文件:
[HttpPost]
public ActionResult Action(string name, HttpPostedFileBase file)
{
// 处理上传的信息和文件
return View();
}
在Action方法中,你可以通过参数来接收表单中的文本字段和文件对象。
这样,你就可以同时上传信息和文件了。