Quiero hacer esto , pero también quiero poder pasar matrices a la cadena de consulta. He intentado cosas como:
http://www.sitename.com/route?arr[]=this&arr[]=that http://www.sitename.com/route?arr[]=this&that http://www.sitename.com/route?arr[0]=this&arr[1]=that http://www.sitename.com/route?arr0=this&arr1=that http://www.sitename.com/route?arr=this&arr=thatY mi ruta en el código C# se ve así:
[Route("route")] [HttpGet] public void DoSomething(string[] values) { // ... }Pero en todos estos casos, los valores siempre son nulos cuando llegan al código C#. ¿Qué necesito que sea mi cadena de consulta para pasar una matriz de cadenas?
Utilice un nombre de parámetro en la cadena de consulta. Si tienes una acción:
public void DoSomething(string[] values) Luego use values en la cadena de consulta para pasar una matriz a un servidor:
?values=this&values=thatLa cadena delimitada no es el estándar. Piense también en el cliente si admite swagger u otros generadores.
Para aquellos que se preguntan sobre el error .net core 2.1 que recibe una lista vacía, la solución está aquí: https://github.com/aspnet/Mvc/issues/7712#issuecomment-397003420
Necesita un parámetro de nombre en FromQuery
[FromQuery(Name = "employeeNumbers")] List<string> employeeNumbersHe encontrado una solución. Por ejemplo, si tiene una consulta como esta:
http://www.sitename.com/route?arr[]=this&arr[]=that
Debe definir en el parámetro como [FromQuery(Name = "arr[]")] . El nombre del parámetro debe incluir corchetes. Como resultado podemos ver:
public void DoSomething([FromQuery(Name = "arr[]")] string[] arr)