Pass Array into ASP.NET Core Route Query String

user3685285 picture user3685285 · Apr 13, 2017 · Viewed 46.7k times · Source

I want to do this, but I want to also be able to pass in arrays into the query string. I've tried things like:

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=that

And my route in the C# code looks like this:

[Route("route")]
[HttpGet]
public void DoSomething(string[] values)
{
    // ...
}

But in all of these cases, values is always null when it gets to the C# code. What do I need my query string to be to pass an array of strings?

Answer

Mohsen Tabareh picture Mohsen Tabareh · Sep 7, 2018

Delimited string is not the standard. Think also about the client if you support swagger or other generators.

For those who wonder about .net core 2.1 bug which receives an empty list, the work around is here: https://github.com/aspnet/Mvc/issues/7712#issuecomment-397003420

It needs a name parameter on FromQuery

[FromQuery(Name = "employeeNumbers")] List<string> employeeNumbers