使用ajax和bootstrap模式提交带有文件的表单

时间:2015-01-30 23:38:51

标签: ajax asp.net-mvc jquery-file-upload

我正在尝试将一些数据和文件提交给我的控制器操作:

[HttpPost]
public ActionResult Settle(SettlePrepaymentViewModel settlePrepaymentViewModel)
{
        //Do something and return JSON
}

我的视图模型包含以下属性:

public HttpPostedFileBase File { get; set; }
public Guid? PrepaymentId { get; set; }

在我的表单中,我有一些文本框和文件输入。当我按下按钮时,我希望将我的表单(带文件)提交给我的操作:

$('#btnConfirmSettlement').click(function (e) {
            $.ajax({
                url: '@Url.Action("Settle", "Prepayments")',
                type: "POST",
                data: $("#uploadFile").serialize(),
                success: function (data) {
                    if (data.isSuccess) {
                        toastr.success("Success");
                    } else {
                        toastr.error(data.errorMessage);
                    }
                },
                error: function (data) {
                    toastr.error(data.errorMessage);
                }
            });
            return false;
        });

然而,当使用上面的代码时,它不起作用(没有文件传递给我的动作。但是当使用下面的代码(我的表单只是提交)时,它工作正常:

@using (Html.BeginForm("Settle", "Prepayments", FormMethod.Post, new {enctype = "multipart/form-data", @id="uploadFileSubmi"}))
{
    @Html.TextBoxFor(model => model.SettlePrepaymentViewModel.File, new {type = "file"})

    <input type="submit" value="Settle"/>
}

当我点击我的twitter bootstrap模式中的“保存”时,我试图使用表单提交但是它只是返回我(重定向我)我的动作的JSON结果 - 我不想被重定向。有人可以帮我这个吗?我究竟做错了什么?

0 个答案:

没有答案