【发布时间】:2018-09-26 18:28:58
【问题描述】:
我正在尝试将一组复选框值从 MVC 中的 Ajax 表单传递到控制器操作。这是我的代码:
形式(模态):
@using (Ajax.BeginForm("GetPrintableProject", "Project", null, new AjaxOptions { HttpMethod = "POST"}, new { @id = "PrintProjectFormId"))
{
<input type="hidden" name="projectId" id="projectId" value="">
}
一些获取复选框值数组的 jQuery:
selectedProjects = projectsGrid.$('input[type="checkbox"]').serializeArray();
var projects = [];
$(selectedProjects).each(function (i, field) {
projects.push(field.value);
});
//the hidden field in a modal I'm using
$('#projectId').val(projects.toString());
以及我用来提交的函数:
$("#PrintProjectFormId").submit(function (event) {
event.preventDefault();
event.stopImmediatePropagation();
var action = $("#PrintProjectFormId").attr("action");
var dataString = new FormData($("#PrintProjectFormId").get(0));
$.ajax({
type: "POST",
url: action,
data: dataString,
dataType: "json",
contentType: false,
processData: false,
success: function (result) {
//stuff I'll get to later
},
error: function (jqXHR, textStatus, errorThrown) {
alert("There was a problem retrieving this project");
}
});
});
然后是控制器签名:
[HttpPost]
public JsonResult GetPrintableProject(Guid[] projectId)
如果我传入一个值,它工作正常,但如果我传入多个值,控制器只会得到“空”。认为我在这里遗漏了一些简单的东西。提前致谢。
【问题讨论】:
-
除非你有特定的理由覆盖
dataTypecontentType或processData的默认值(你似乎没有这样做)我建议你保留它们的默认值。
标签: javascript jquery ajax model-view-controller