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}