我有一个包含一些字符串和HttpPostedFileBase属性的ViewModel。 当我使用下面的ajax调用将模型发布到控制器时,
$.ajax({
url: '@Url.Action("_AddFeedback", "Mcq")',
type: 'post',
data: $('form#frm-feedback').serialize(),
// data: formData,
success: function (data) {
alert("done");
},
error: function (data) {
alert("Error occured while saving Option's data.");
}
});
我为字符串获取值,但 HttpPostedFileBase 类型属性为null。我们如何使用ajax ??
发布HttpPostedFileBase文件答案 0 :(得分:2)
不幸的是,在序列化表单时,您无法使用AJAX发送文件,但幸运的是还有另一种方法,如果您不介意使用HTML5。一个简短的例子,根据this回答:
<强>标记:强>
<form id="upload-form" enctype="multipart/form-data">
<input name="file" type="file" />
<input type="button" id="submit" value="Upload" />
</form>
<强>使用Javascript:强>
$('#submit').click(function (e) {
e.preventDefault();
var formData = new FormData($('#upload-form')[0]);
$.ajax({
url: '@Url.Action("_AddFeedback", "Mcq")',
type: 'POST',
data: formData,
cache: false,
contentType: false,
processData: false
});
});
如上所述,这是一种HTML5方法,这意味着它不一定适用于每个浏览器。如果这是一个问题,请参阅我已链接的主题以解决此问题的其他方法。