我正在尝试将一些数据和文件提交给我的控制器操作:
[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结果 - 我不想被重定向。有人可以帮我这个吗?我究竟做错了什么?