2017-04-26 4 views
0

Aus irgendeinem Grund kann ich keine ID-Liste in meine Controller-Aktion mit meiner AJAX-Anfrage übergeben. Ich bekomme den Fehler 404 unter der Konsole. Kann mir jemand sagen, warum das passiert?Ajax Aufruf an C# Controller-Aktion funktioniert nicht

Fehler

fehlgeschlagen Ressource laden: der Server mit einem Status von 404 geantwortet (Not Found) http://localhost:8088/Clients/VolDashboard/getViewsAssigned?candidateIds%5B%5D=177

Controller Aktion

public JsonResult getViewsAssigned(List<long> candidateIds) 
    { 
     long clientId = webRequestState.ClientId.Value; 
     long clientUserId = webRequestState.ClientUserId.Value; 
     return Json(clientViewService.getViewsAssignedToCandidates(candidateIds, clientId, clientUserId), JsonRequestBehavior.AllowGet); 
    } 

AJAX Anfrage

$.ajax({ 
      type: "GET", 
      url: "../Clients/VolDashboard/getViewsAssigned?" + $.param({ candidateIds: populateSelectedCandidateIds() }), 
      success: Success, 
      error: Errors 
     }); 
+0

public JsonResult getViewsAssigned (List candidateIds) ist nicht korrekt. – loneshark99

Antwort

0

Das Problem ist, dass Ihre C# -Methode eine List<long> als Parametertyp erwartet. Laut Ihrer URL senden Sie nur eine int (die in eine einzige long konvertiert werden kann). Das Problem ist, dass es sich nicht um eine Sammlung handelt. Daher kann die Route nicht gefunden werden. Der HTTP-Code 404 ist korrekt.

In dieser Situation, in der Sie die URL für die Liste codieren, wäre es wahrscheinlich die beste Wahl, sie als Zeichenfolge zu übergeben.

$.ajax({ 
    type: "GET", 
    url: "../Clients/VolDashboard/getViewsAssigned?" + 
      $.param({ candidateIds: 
       populateSelectedCandidateIds().toString() 
      }), 
    success: Success, 
    error: Errors 
}); 

Dann benötigen Sie eine C# Methode wie folgt anzupassen:

public JsonResult getViewsAssigned(string candidateIds) 
{ 
    List<long> idList = candidateIds.Split(',').Select(long.Parse).ToList(); 
    long clientId = webRequestState.ClientId.Value; 
    long clientUserId = webRequestState.ClientUserId.Value; 
    return Json(clientViewService.getViewsAssignedToCandidates(idList, clientId, clientUserId), JsonRequestBehavior.AllowGet); 
} 
+0

Das funktionierte wie ein Zauber! Ich danke dir sehr!!! –

0

Versuch Pass Parameter über die Daten Eigenschaft:

var data = populateSelectedCandidateIds(); 
$.ajax({ 
type: "GET", 
data: {candidateIds: data}, 
url: "../Clients/VolDashboard/getViewsAssigned", 
success: Success, 
error: Errors 
}); 

Sie können auch here akzeptierte Antwort siehe Hauptidee zu bekommen.

Verwandte Themen