Tengo una matriz de javascript 2d como esta
[[2,3],[13,4],[1,19]]y quiero pasarlo a mi controlador .Net
El encabezado de mi controlador se ve así
public async Task<ActionResult> UpdateOrder(int[,] order)Mi llamada put se ve así
updateOrder(order: number[][]): Observable<any> { return this.http.put(this.baseUrl + 'members/edit/set-order/' + order, {}); }pero recibo un error cuando presiono el controlador diciendo:
'No se puede deserializar el objeto JSON actual (por ejemplo, {"nombre":"valor"}) en el tipo 'System.Int32[,]' porque el tipo requiere una matriz JSON (por ejemplo, [1,2,3]) para deserializar correctamente. \nPara corregir este error, cambie el JSON a una matriz JSON (por ejemplo, [1,2,3]) o cambie el tipo deserializado para que sea un tipo .NET normal (por ejemplo, no un tipo primitivo como un entero, no un tipo de colección como una matriz o una lista) que se puede deserializar desde un objeto JSON. JsonObjectAttribute también se puede agregar al tipo para obligarlo a deserializarse de un objeto JSON.\nRuta '', línea 1, posición 2.'
Creo que es posible que deba usar el tipo List<List<int>> en lugar de int[,] en C# del serializador C# JSON predeterminado
public async Task<ActionResult> UpdateOrder(List<List<int>> order)No necesita pasar por la deserialización (manual) y no necesita un List<List<int>> . Puedo pasar una matriz 2d de int s con una carga útil como [[1,2],[3,4],[5,6]] y la siguiente interfaz API.
public async Task<IActionResult> Test(int [,] ints)
¿No es su URL en la solicitud? Trata el order como una cadena para enviar a la URL y el cuerpo está vacío. Y cuando el cuerpo está vacío, ves ese error que estás recibiendo. Creo que lo que necesitas es:
return this.http.put('yourUrl', order, {});
Ver puesto . (asumiendo Angular)