2012-10-17 20 views
5

Próbuję wywołać metodę .net Web Api za pośrednictwem $ .ajax jquery. Kiedy przechodzą w

var procesie = "pierwszy proces" var nameArray = [ "pierwszy", "drugi"] var valueArray = [ "wart1", "wart2"]

, a następnie:

$.ajax({ 
url: jsonFeed, 
data: {process: process, nameArray: nameArray, valueArray: valueArray}, 
    etc... 

mam metodę ASP.NET Web API:

public string GetResponseToken(string process, string[] nameArray, string[] valueArray) 

Kiedy biegnę wszystko, pojawia się komunikat o błędzie:

"Nie można powiązać wielu parametrów (" nameArray "i" valueArray ") z treścią żądania."

Czy ktoś wie, dlaczego tak jest, lub jak mogę to naprawić, aby zaakceptować moje tablice?

+0

Jaki jest twój typ ajax GET lub POST połączeń? – nemesv

+0

Typ wywołania ajax jest GET –

Odpowiedz

11

Parametr Web.API/spinacz modelu działa inaczej niż w MVC. Trzeba powiedzieć, że to ty wa powiązać wszystkie swoje argumenty z ciągu kwerendy z atrybutem [FromUri]:

public string GetResponseToken(
     [FromUri]string process, 
     [FromUri]string[] nameArray, 
     [FromUri]string[] valueArray) 
{ 
    //... 
} 

w dłuższej perspektywie (np powyższe podejście nie będzie działać, jeśli żądania type to POST) powinieneś rozważyć użycie obiektu parametru zamiast wielu argumentów.

public string GetResponseToken([FromUri]ResponseTokenRequest request) 
{ 
    //... 
} 

public class ResponseTokenRequest 
{ 
    public string Process { get; set; } 
    public string[] NameArray { get; set; } 
    public string[] ValueArray { get; set; } 
} 

Możesz się dowiedzieć o parametrze Wep.API wiązania w następujących artykułach:

Powiązane problemy