【问题标题】:Post modelcontaining HttpPostedFileBase file along with some parameters using form.serialize() in mvc4在 mvc4 中使用 form.serialize() 发布包含 HttpPostedFileBase 文件以及一些参数的模型
【发布时间】:2014-07-30 12:50:05
【问题描述】:

我有一个 ViewModel 包含一些字符串和 HttpPostedFileBase 属性。 当我使用下面的 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 文件??

【问题讨论】:

    标签: jquery asp.net-mvc asp.net-mvc-4


    【解决方案1】:

    不幸的是,在序列化表单时,您无法使用 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 方法,这意味着它不一定适用于所有浏览器。如果这是一个问题,请参阅我链接到的线程以了解解决此问题的其他方法。

    【讨论】:

    • Naveen 说:ViewModel 包含一些字符串和 HttpPostedFileBase 属性。所以它不仅仅是 HttpPostedFileBase 属性。@Naveen 也想序列化表单而不是将它们附加到 FormData。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多