2015-06-23 19 views
17

Próbuję uzyskać dostęp do parametrów ciągu zapytania w moich aplikacjach ASP.NET MVC6. Ale wydaje się, w przeciwieństwie do MVC5 i internetowych form, QueryString nie ma żadnego podziałowe i nie mogę powiedzieć coś w stylu:Uzyskiwanie dostępu do kwerendy w ASP.NET MVC6

string s = Request.QueryString["key1"] //gives error 

Więc moje pytanie - w jaki sposób mogę uzyskać dostęp do parametrów ciąg kwerendy w MVC6?

Zaskakująco Request.Forms kolekcja działa zgodnie z oczekiwaniami (jak w MVC5 lub formularzach internetowych).

Dziękuję.

+0

jaki błąd masz? –

+0

Nie należy używać QueryString lub Form w MVC, zamiast tego powinieneś mieć parametr w kontrolerze, który będzie automatycznie wiązał się z wartościami. –

Odpowiedz

28

Pierwsze zapytanie z indeksatora jest obsługiwany.

kodu testu See MVC tutaj - https://github.com/aspnet/Mvc/blob/e0b8532735997c439e11fff68dd342d5af59f05f/test/WebSites/ControllersFromServicesClassLibrary/QueryValueService.cs

context.Request.Query["value"]; 

Należy również pamiętać, że w MVC 6 można modelować wiążą się bezpośrednio z kwerendy za pomocą [FromQuery] atrybut.

public IActionResult ActionMethod([FromQuery]string key1) 
{ 
    ... 
} 
+0

'[FromQuery]' jest tym czego mi brakowało – gldraphael

+0

To jest właściwie moment uczenia się. Nie miałem pojęcia, że ​​[FromQuery] istnieje. Wygląda na to, że nie jest dobrze udokumentowany. Istnieje również [FromHeader] i [FromForm] między innymi. Możesz nawet pisać niestandardowe segregatory. –

17

Moje pytanie brzmi - w jaki sposób uzyskać dostęp do parametrów ciągu zapytania w MVC6?

Można użyć Request.Query który jest nowością w ASPNET 5.

var queryStrings = Request.Query; 

URL Mam zamiar spróbować było - http://localhost:12048/Home/Index?p=123&q=456 I można uzyskać wszystkie klucze używając -

queryStrings.Keys 

enter image description here

A następnie można uzyskać wartości przez iterat ing klucze -

var qsList = new List<string>(); 
foreach(var key in queryStrings.Keys) 
{ 
     qsList.Add(queryStrings[key]); 
} 

enter image description here

Powiązane problemy