2016-05-29 8 views
1

Hier ist der relevante Ansicht cshtml CodeWarum wird die MVC-Controller-Aktionsmethode als "HttpPost" gekennzeichnet, die nicht von einer externen JavaScript-Datei aufgerufen wird?

<tbody> 
    @foreach (var task in Model.TasksSummaryList) 
    { 
     <tr> 
      <th onclick="OnPatientSelected('@task.PatientID')">@task.PatientName</th> 
      <th>@task.Status</th> 
      <th>@task.TaskCount</th> 
      <th>@task.MostRecentTask</th> 
     </tr> 
    } 
</tbody> 

Hier wird die externe JavaScript-Datei

function OnPatientSelected(selectedPatientID) { 
    $.ajax({ 
     type: "POST", 
     url: "TasksSummary/TaksSummaryDetailsView", 
     data: { selectedPatientID: selectedPatientID }, 
     error: function() { 
      alert("fail"); 
     }, 
     success: function(){ 
     alert("success"); 
     } 
    }); 
    } 

OnPatientSelected enthält Dies zeigt immer Erfolg, aber nie werden die Controller ActionMethod ich

wollen
[AllowAnonymous] 
     [HttpPost] 
     public ActionResult TasksSummaryDetailsView(/*data from view*/string selectedPatientID) 
     { 
      int i = 09; 
      //Received PatientID from View (Client) 
      //Browse to the appropriate view 
      return View(); 
     } 
+0

können Sie einen Haltepunkt halten in Ihrem Aktionsmethode und prüfen, ob sie getroffen wird –

+0

Wie haben Sie verifiziert, dass die Aktion nicht aufgerufen wird? Beachten Sie außerdem, dass die angegebene URL die Adresse der aktuellen Seite ist (https://stackoverflow.com/questions/4765740/relative-urls-in-ajax-requests) und möglicherweise nicht den erwarteten Pfad ergibt . –

+0

Versuchen Sie es mit Fiddler zu sehen, welche Anrufe gemacht werden und was die Ausgabe ist. Probieren Sie die URL auch direkt im Browser aus, um zu sehen, ob sie funktioniert: '.../TasksSummary/TaksSummaryDetailsView? SelectedPatientID =" yourvalue "' – TheUknown

Antwort

1

Der Pfad muss relativ sein, versuchen Sie Folgendes:

url: "../TasksSummary/TaksSummaryDetailsView", 

Oder noch besser:

url: '@Url.Action("TasksSummary", "TasksSummaryDetailsView")', 
+0

Also habe ich alle möglichen Kombinationen ausprobiert. Funktioniert immer noch nicht. Meine Controller-Datei ist TasksSummaryController.cs und das enthält HttpPost getaggte Aktionsmethode TasksSummaryDetailsView –

+0

alle Fehler in F12-Entwicklungstools - Netzwerk? –

-1

ersetzt also die URL-Zeile in Ajax-Aufruf mit dem folgenden und es funktioniert

url: 'TasksSummaryDetailsView'

+0

Sie haben nicht erklärt, warum das funktioniert. Verstehst du, warum dies das Problem behoben hat? Oder hast du einfach das wiederholt, was James P bereits in seiner Antwort gesagt hat? –

+0

Da also die Pfade relativ waren, funktionierte die obige Zeile. Keine F12-Netzwerkfehler. –