Aceptando una matriz primitiva como parámetro de acción OData.
Me gustaría pasar una matriz de enteros a una ruta ASP.NET OData como parámetro y no puedo hacer que funcione.
He intentado lo siguiente:
[ODataRoute("IWantMeSomeNumbers/GetForNumbers(numbers={numbers})")]
public IQueryable<iamanappropriateresponse> GetForNumbers(int[] numbers)
{
// snip
}
[ODataRoute("IWantMeSomeNumbers/GetForNumbers(numbers=[{numbers}])")]
public IQueryable<iamanappropriateresponse> GetForNumbers(int[] numbers)
{
// snip
}
[ODataRoute("IWantMeSomeNumbers/GetForNumbers(numbers={numbers})")]
public IQueryable<iamanappropriateresponse> GetForNumbers(IEnumerable<int> numbers)
{
// snip
}
[ODataRoute("IWantMeSomeNumbers/GetForNumbers(numbers=[{numbers}])")]
public IQueryable<iamanappropriateresponse> GetForNumbers(IEnumerable<int> numbers)
{
// snip
}
[ODataRoute("IWantMeSomeNumbers/GetForNumbers(numbers={numbers})")]
public IQueryable<iamanappropriateresponse> GetForNumbers([FromODataUri] int[] numbers)
{
// snip
}
[ODataRoute("IWantMeSomeNumbers/GetForNumbers(numbers=[{numbers}])")]
public IQueryable<iamanappropriateresponse> GetForNumbers([FromODataUri] int[] numbers)
{
// snip
}
[ODataRoute("IWantMeSomeNumbers/GetForNumbers(numbers={numbers})")]
public IQueryable<iamanappropriateresponse> GetForNumbers([FromODataUri] IEnumerable<int> numbers)
{
// snip
}
[ODataRoute("IWantMeSomeNumbers/GetForNumbers(numbers=[{numbers}])")]
public IQueryable<iamanappropriateresponse> GetForNumbers([FromODataUri] IEnumerable<int> numbers)
{
// snip
}
[ODataRoute("IWantMeSomeNumbers/GetForNumbers()")]
public IQueryable<iamanappropriateresponse> GetForNumbers(ODataActionParameters parameters)
{
// snip
}
En todos y cada uno de los casos, recibo el siguiente error:
La plantilla de ruta 'IWantMeSomeNumbers/GetForNumbers(numbers={numbers})' en la acción 'GetForNumbers' en el controlador 'IWantMeSomeNumbers' no es una plantilla de ruta OData válida. Solicitud incorrecta: error en la sintaxis de la consulta.
¿Alguien puede decirme si esto es posible y, de ser así, qué estoy haciendo mal?
davy.ai
Sí, es posible pasar una matriz de
int
a una ruta ASP.NET OData como parámetro. La sintaxis correcta para la definición de la ruta OData es:En este caso, el parámetro
numeros
está marcado con el atributo[FromODataUri]
. Este atributo le indica al marco de trabajo ASP.NET OData que el parámetro debe obtenerse de la URI de la solicitud.Al llamar a esta ruta, el cliente debe usar el siguiente formato de URL:
Debes tener en cuenta que la matriz de valores
int
se pasa como una lista separada por comas en la URL.