2017-04-13 251 views
4

我想要做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

回答

6

在查詢字符串中使用參數名稱。如果你有一個動作:

public void DoSomething(string[] values) 

然後使用values在查詢字符串數組傳遞到服務器端:

?values=this&values=that 
+0

這是我嘗試過的事情列表。它不適合我。 – user3685285

+0

@ user3685285,我檢查了它,它的工作方式如上所述。你可以傳遞一個單一的值到'Foo(string value)'這樣的動作嗎? –

+0

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

0

最後,我只是在一個單一的一個分隔字符串傳遞,然後使用string.Split在服務器端分開。不是最漂亮的解決方案,但它的工作原理。直到有人想出更好的答案,這就是我得到的。我應該重申我正在使用.NET Core,並且這些查詢字符串是特定於框架的。

2

我不得不做一些類似的事情,但不是字符串,我使用了一個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