将数组传递到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#代码。我需要什么我的查询字符串传递一个字符串数组?
在查询字符串中使用参数名称。如果你有一个动作:
public void DoSomething(string[] values)
然后使用values
在查询字符串数组传递到服务器端:
?values=this&values=that
这是我尝试过的事情列表。它不适合我。 – user3685285
@ user3685285,我检查了它,它的工作方式如上所述。你可以传递一个单一的值到'Foo(string value)'这样的动作吗? –
@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
不认为这是可能的 – Alexan
您的参数名称不符。更改arr或值。 – Tratcher