2017-11-29 37 views
0

Ich habe eine Aktion, die wie folgt aussieht:Web API 2 Action mit String-Array als GET-Parameter nicht wie erwartet funktioniert

/// <summary> 
/// Search for customers/projects/tasks by title. 
/// </summary> 
/// <param name="q">The query to search by.</param> 
/// <param name="filters">Extra filters for the search query.</param> 
[Route("Search")] 
public IHttpActionResult GetSearch(string[] filters, string q = "") 
{ 
    ... 
} 

Nach den Informationen, die ich finden konnte, sollte ich in der Lage sein, Werte die passieren filters Parameter durch eine uRL ähnlich wie dies mit:

http://application/controller/Search?q=query&filters=first&filters=second 

Leider ist für mich, wenn ich versuche, die filters Parameter innerhalb dieser Aktion zugreifen zu können, ist es immer null.

EDIT: Wenn die api Hilfe Anzeigen von Seiten in meiner Anwendung, es wird nur q als URI-Parameter zeigt.

Der Parameter filters scheint als body-Parameter erkannt zu werden.

Help page screenshot

Hat jemand eine Idee, was dieses Verhalten verursachen könnte und wie ich es beheben könnte? (Wie kann ich die filters Parameter machen kann als URI-Parameter erkannt werden.)

Antwort

0

So scheint die Lösung hier war die Aktion, dies zu ändern:

public IHttpActionResult GetSearch([FromUri] string[] filters, string q = "") 
{ 
    ... 
} 

Die [FromUri] vor einem Parameter zwingt den Parameter aus dem URI statt aus dem Körper genommen werden.