将数组传递到ASP.NET核心路由查询字符串

问题描述:

我想要做this,但我想也能够将数组传递到查询字符串中。我尝试过的东西,如:将数组传递到ASP.NET核心路由查询字符串

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 

和我的C#代码的路线是这样的:

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

但在所有这些情况下,值始终为空时,它得到的C#代码。我需要什么我的查询字符串传递一个字符串数组?

+1

不认为这是可能的 – Alexan

+0

您的参数名称不符。更改arr或值。 – Tratcher

在查询字符串中使用参数名称。如果你有一个动作:

public void DoSomething(string[] values) 

然后使用values在查询字符串数组传递到服务器端:

?values=this&values=that 
+0

这是我尝试过的事情列表。它不适合我。 – user3685285

+0

@ user3685285,我检查了它,它的工作方式如上所述。你可以传递一个单一的值到'Foo(string value)'这样的动作吗? –

+0

@Tratcher你是什么意思?有用。 –

最后,我只是在一个单一的一个分隔字符串传递,然后使用string.Split在服务器端分开。不是最漂亮的解决方案,但它的工作原理。直到有人想出更好的答案,这就是我得到的。我应该重申我正在使用.NET Core,并且这些查询字符串是特定于框架的。

我不得不做一些类似的事情,但不是字符串,我使用了一个long列表来传递一些id来进行搜索。使用多重选择选项,选择的值发送到该方法(通过GET)是这样的:

[HttpGet("[action]")] 
public IActionResult Search(List<long> idsSelected) 
{ 
    ///do stuff here 
} 

我也是在类声明之前使用Route("[controller]")。工作得很好,但是项目列表被分解为url中的多个参数,如下所示。

http://localhost:5000/Search/idsSelected=1&idsSelected=2