2015-10-12 15 views
5

Przeczytałem wszystkie podobne pytania tutaj, ale nie mogę wymyślić rozwiązania. Próbuję wywołać metodę web-api:Jak przekazać parametr słownika do metody web-api?

[HttpGet] 
public SearchViewModel Get(SearchTypes type, string text, [FromUri]Dictionary<string, string> toyParams) 
{ 
    //Code here 
} 

i chcę uzyskać ostatni parametr z uri. Próbowałem

http://localhost:39101/#!/search/toys/fox?someParameter=123

i

http://localhost:39101/#!/search/toys/fox?toyParams[0].Key=someParameter&toyParams[0].Value=123

ale toyParams Dictionary zawsze pusty.

+0

Co jeśli przecinek oddzielić wartości w adresie URL, aby je z powrotem jako długi ciąg znaków, a następnie podzielić je uzyskać toyParams. – rasharasha

+0

Wydaje się, że to haker, a nie rozwiązanie.) – LbISS

+2

przekazywanie słowa/wartości słownika przez URI w żądaniu GET !!. Dlaczego nie masz jakiegoś identyfikatora dla danych, które chcesz odzyskać, tak, że nie musisz przekazywać tak dużych danych w URI – singsuyash

Odpowiedz

-3

jeden prosty sposób, zamiast słownika:

//DTO 
    public class SearchDTO 
    { 
     public int MyProperty1 { get; set; } 
     public int MyProperty2 { get; set; } 
     public int MyProperty3 { get; set; } 
    } 

Gdzie MyProperty1, MyProperty2, MyProperty3 są params na podstawie których coś musi być przeszukane.

 //GET Method 
     public string Get([FromUri]SearchDTO searchDTO) 
     { 
      return "search result"; 
     } 

Poniżej URL Wywołanie:

http://localhost:56880/api/values?myproperty1=1&myproperty2=2&myproperty3=3

+0

stara odpowiedź, ale nie jest to dobre rozwiązanie, w kontekście, w którym trzeba podać wiele parametrów dynamiki, to rozwiązanie jest nieważne. – Fernando

+0

Jaki inny sposób jest dostępny w przypadku żądania GET? – singsuyash

+0

Naprawdę chciałbym wiedzieć "Jaki inny sposób jest dostępny w przypadku żądania GET?" Downvoters, czy możesz wyjaśnić (chcę wiedzieć, bo chcę się czegoś nauczyć) – singsuyash

Powiązane problemy