2017-07-05 4 views
1

Ich sende Parameter von JS als:Nulleable Parameter unter Verwendung von Routendaten Anmerkungen

apiService.post("../../api/Catalogo/UpdateCatalogoRegistro/" + $scope.Codigo + "/" + $scope.Nombre + "/" + $scope.catalogoid + "/" + $scope.Catalogo + "/" + $scope.selected.ID 

und ich erhalte in den Controller wie:

[Route("UpdateCatalogoRegistro/{Codigo}/{Nombre}/{ID}/{Padre}/{scopeSelected?}")] 
public HttpResponseMessage UpdateCatalogoRegistro(HttpRequestMessage request, string Codigo, string Nombre, int ID, string Padre, int? scopeSelected) 

Wie man sehen kann ich nulleable scopeSelected erhalten möchten. Wenn ich alle Parameter in mit Postbote senden als:

http://localhost:55720/api/Catalogo/UpdateCatalogoRegistro/T60/T6000/4/MOD/2

gibt es einen Wert, aber wenn ich letzten Parameter lösche, wie:

http://localhost:55720/api/Catalogo/UpdateCatalogoRegistro/T60/T6000/4/MOD/

es wirft mich:

"Nachricht": "Es wurde keine HTTP-Ressource gefunden, die der Anfrage-URI 'http://localhost:55720/api/Catalogo/UpdateCatalogoRegistro/T60/T6000/4/MOD/'.",entspricht"MessageDetail": "Es wurde keine Aktion auf dem Controller 'CatalogoRegistro' gefunden, die der Anfrage entspricht."

Es wurde keine Route gefunden. Warum erkennt es NULL-Parameter nicht? Kann mir jemand helfen?

Antwort

0

Es ist wegen des Schrägstrichs / am Ende der URL. Die Routing-Tabelle kann nicht mit diesem Segment umgehen.

die URL entsprechend konstruieren, wenn die Anfrage zu senden

var url = "../../api/Catalogo/UpdateCatalogoRegistro/" + $scope.Codigo + "/" + $scope.Nombre + "/" + $scope.catalogoid + "/" + $scope.Catalogo; 
if ($scope.selected.ID) { // or how ever you check for null 
    url = url + "/" + $scope.selected.ID 
} 
apiService.post(url); 

Es ist entweder, dass unser Check, dass die URL mit einer Hinter / nicht endet, bevor die Anforderung zu machen und entfernen.

var url = "../../api/Catalogo/UpdateCatalogoRegistro/" + $scope.Codigo + "/" + $scope.Nombre + "/" + $scope.catalogoid + "/" + $scope.Catalogo + "/" + $scope.selected.ID; 
apiService.post(url.trimRight("/")); 

im obigen Fall wird trimRight("/") jede folgende Schrägstriche am Ende der URL zu trimmen verwendet.

Verwandte Themen