Puede que se de el caso de que encuentres algún problema en tu código o proyecto, recuerda probar siempre en un entorno de testing antes aplicar el código al proyecto final.
Solución:
Usando la sugerencia de NickW, pude hacer que esto funcionara usando things = JSON.stringify( 'things': things );
Aquí está el código completo.
$(document).ready(function ()
var things = [
id: 1, color: 'yellow' ,
id: 2, color: 'blue' ,
id: 3, color: 'red'
];
things = JSON.stringify( 'things': things );
$.ajax(
contentType: 'application/json; charset=utf-8',
dataType: 'json',
type: 'POST',
url: '/Home/PassThings',
data: things,
success: function ()
$('#result').html('"PassThings()" successfully called.');
,
failure: function (response)
$('#result').html(response);
);
);
public void PassThings(List things)
var t = things;
public class Thing
public int Id get; set;
public string Color get; set;
Hay dos cosas que aprendí de esto:
-
Las configuraciones contentType y dataType son absolutamente necesarias en la función ajax(). No funcionará si faltan. Descubrí esto después de mucho ensayo y error.
-
pasar en un array de objetos a un método de controlador MVC, simplemente use el formato JSON.stringify( ‘cosas’: cosas ).
¡Espero que esto ayude a alguien más!
¿No podrías simplemente hacer esto?
var things = [
id: 1, color: 'yellow' ,
id: 2, color: 'blue' ,
id: 3, color: 'red'
];
$.post('@Url.Action("PassThings")', things: things ,
function ()
$('#result').html('"PassThings()" successfully called.');
);
…y marca tu acción con
[HttpPost]
public void PassThings(IEnumerable things)
// do stuff with things here...
Formatear sus datos que puede ser el problema. Prueba cualquiera de estos:
data: ' "things":' + JSON.stringify(things) + '',
O (de ¿Cómo puedo publicar un array de string al controlador ASP.NET MVC sin un formulario?)
var postData = things: things ;
...
data = postData
Recuerda comunicar esta noticia si te fue de ayuda.