How to post an empty array (of ints) (jQuery -> MVC 3) How to post an empty array (of ints) (jQuery -> MVC 3) arrays arrays

How to post an empty array (of ints) (jQuery -> MVC 3)


You could do this:

var myIntArray = new Array();// add elements or leave emptymyIntArray.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 emptymyIntArray.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):

  • when you 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}