我有一个包含一些字符串和 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类型属性。我们如何使用 ajax 发布 HttpPostedFileBase 文件?
不幸的是,在序列化表单时,您无法使用 AJAX 发送文件,但幸运的是,如果您不介意使用 HTML5,还有另一种方法。一个简短的例子,根据this https://stackoverflow.com/questions/166221/how-can-i-upload-files-asynchronously-with-jquery/8758614#8758614 answer:
Markup:
<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 方法,这意味着它不一定适用于所有浏览器。如果这是一个问题,请参阅我链接到的线程以了解解决此问题的其他方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)