使用 mvc4 中的 form.serialize() 发布包含 HttpPostedFileBase 文件以及一些参数的模型

2024-01-11

我有一个包含一些字符串和 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(使用前将#替换为@)

使用 mvc4 中的 form.serialize() 发布包含 HttpPostedFileBase 文件以及一些参数的模型 的相关文章

随机推荐