Por fin luego de tanto batallar ya encontramos la solución de esta dificultad que muchos de nuestros usuarios de nuestro espacio tienen. Si quieres compartir algún detalle no dudes en compartir tu información.
Solución:
Establezca la propiedad tradicional en true antes de hacer la llamada. es decir:
jQuery.ajaxSettings.traditional = true
$.get('/controller/MyAction', vals: arrayOfValues , function (data) {...
He tenido problemas en el pasado al intentar realizar un POST (no estoy seguro de si eso es exactamente lo que estás haciendo, pero recuerdo que al pasar un array en, tradicional debe establecerse en true.
var arrayOfValues = new Array();
//Populate arrayOfValues
$.ajax(
type: "POST",
url: "<%= Url.Action("MyAction","Controller")%>",
traditional: true,
data: 'arrayOfValues': arrayOfValues
);
Bastante tarde, pero diferente respuesta a las ya presentes aquí:
si en lugar de $.ajax
le gustaría usar funciones abreviadas $.get
o $.post
puede pasar matrices de esta manera:
Obtener taquigrafía
var array = [1, 2, 3, 4, 5];
$.get('/controller/MyAction', $.param( data: array , true), function(data) );
// Action Method
public void MyAction(List data)
// do stuff here
POST abreviado
var array = [1, 2, 3, 4, 5];
$.post('/controller/MyAction', $.param( data: array , true), function(data) );
// Action Method
[HttpPost]
public void MyAction(List data)
// do stuff here
Notas:
- El parámetro booleano en
$.param
es para el
traditional
propiedad, que DEBE sertrue
para que esto funcione.
Nos encantaría que puedieras comunicar este tutorial si te valió la pena.