Using jQuery I am posting an array of int
to my MVC 3 application by putting the array in the data parameter like so: data: { myIntArray: myIntArray }
You could do this:
var myIntArray = new Array();
// add elements or leave empty
myIntArray.push(1);
myIntArray.push(5);
var data = myIntArray.length > 0 ? { myIntArray: myIntArray } : null;
$.ajax({
url: '@Url.Action("someAction")',
type: 'POST',
data: data,
traditional: true,
success: function (result) {
console.log(result);
}
});
or use a JSON request:
var myIntArray = new Array();
// add elements or leave empty
myIntArray.push(1);
myIntArray.push(5);
$.ajax({
url: '@Url.Action("someAction")',
type: 'POST',
data: JSON.stringify(myIntArray),
contentType: 'application/json',
success: function (result) {
console.log(result);
}
});
Just in case anyone lands on this question trying to resolve this...
This is a bug in MVC (that still exists in MVC 4 in 2019, duh):
POST
an empty form parameter into an action method that has an array-mapped variable or model - this results in an 1-element zero array { 0 }
.I found no other way than to deal with it on the back-end.
Here's another question discussing it: ASP.NET MVC Int Array parameter with empty array defaults to {0}