我试图将一个数组从AJAX POST发送到我的控制器。 我的要求:
var selected = [];
$('.unitsCheckBox:checked').each(function () {
selected.push($(this).val());
});
data = {
Units: selected
};
console.debug(data);
$.ajax(
{
url: "/PostVacancies/PostData",
type: "POST",
dataType: 'json',
data: JSON.stringify(data),
contentType: 'application/json; charset=utf-8',
success: function (result) {
console.debug(result);
},
error: function (xhr, status, p3, p4) {
console.debug(xhr);
console.debug(status);
console.debug(p3);
console.debug(p4);
}
});
调试显示数据变量中有选定的单位。
我的控制器:
[HttpPost]
public bool PostData(SelectedUnits Units)
{
return true;
}
SelectedUnits方法:
public class SelectedUnits
{
public List<int> Units { get; set; }
}
我在返回时设置了一个调试点,以查看Units参数数据,但它始终为null。
有谁知道我做错了什么?
答案 0 :(得分:0)
在您的代码中,Units
在客户端始终为null。我们通常附加复选框的更改事件。
<input type="checkbox" class="unitsCheckBox" value="1" />
<input type="checkbox" class="unitsCheckBox" value="2" />
<input type="checkbox" class="unitsCheckBox" value="3" />
<input type="checkbox" class="unitsCheckBox" value="4" />
<button type="button" id="btnSubmit">Submit</button>
@section Scripts
{
<script>
data = { Units: [] };
$('.unitsCheckBox').change(function() {
if ($(this).is(':checked')) {
data.Units.push($(this).val());
} else {
data.Units.pop($(this).val());
}
});
$('#btnSubmit').click(function() {
console.log(JSON.stringify(data));
$.ajax({
url: "/Home/Index",
type: "POST",
dataType: 'json',
data: JSON.stringify(data),
contentType: 'application/json; charset=utf-8',
success: function(result) {
console.debug(result);
},
error: function(xhr, status, p3, p4) {
console.debug(xhr);
console.debug(status);
console.debug(p3);
console.debug(p4);
}
});
});
</script>
}