2017-03-02 7 views
0

Ich bin relativ neu zu WebAPI/AngularJS und habe ein Problem beim Übergeben eines Objekts mit $ http.get() an einen WebAPI-Controller von einem AngularJS-Controller.

AngularJS Controller-Code:

$http.get('api/Employee/GetVacancyStatus?emp='+thisData[0]) 
.then(function (response, success) { 
    if (response.data == false){ 
     alert("cube/office occupied"); 
    } 
    else // continue with employee move 
    { 
     do some stuff... 
    } 
}, function (response, error) { 
    alert(response); 
}); 

Web Api-Controller-Code:

[System.Web.Http.HttpGet, System.Web.Http.ActionName("GetVacancyStatus")] 
    public bool GetVacancyStatus([FromUri] employee emp) 
    { 
     //return repository.GetVacStatus(moveQuery); 
     return false; 
    } 

Wenn ich den Code debuggen, wird das Objekt in dem AngularJS-Controller bestückt werden (zumindest aus der Betrachtung meines Chrome-Entwickler-Tools):

enter image description here

Auf der anderen Seite, wenn die Ausführung den WebAPI-Controller trifft, scheint das Objekt nicht initialisiert zu sein und ich kann nicht feststellen, was ich falsch mache.

enter image description here

ich habe ein $ http.put(), die wie folgt vorbei, ein Objekt zu funktionieren scheint:

$http.put('api/Employee/PutEmployee', emp) 

Vielen Dank im Voraus für jede Hilfe.

+1

Sie können Objekt nicht über URL übergeben. Sie können nur eine Zeichenfolge übergeben. – kat1330

+1

Sie sollten wahrscheinlich die ID des Angestellten übergeben. Sind die anderen Eigenschaften notwendig, um den Leerstand zu kennen? Darüber hinaus handelt es sich um Werte, die von der Client-Seite kommen, so dass Sie nicht darauf vertrauen können, dass sie trotzdem korrekt sind. – juunas

Antwort

1

Jede Eigenschaft des Mitarbeiterobjekts, das übergeben werden soll, muss ein separater Abfrageparameter sein. Sie haben die folgenden in Ihrem Javascript zu tun:

$http.get('api/Employee/GetVacancyStatus?Id='+thisData[0].Id + '&fName=' + thisData[0].fName) 

Sie müssen mit dieser Methode der Controller nicht ändern.

+0

Wenn dies die Antwort ist, nach der Sie gesucht haben, können Sie sie als akzeptiert markieren? –

Verwandte Themen