2014-03-03 18 views
5

In meiner ASP.NET MVC 4-Ansicht ruft das folgende Controller-Aktion nicht auf. Klick-Ereignis wird ausgelöst, weil ich die Warnmeldung sehen kann. Aber wenn ich einen Breakpoint auf die Controller-Aktion im Debug-Modus setze, kommt die App nicht zu diesem Punkt und nichts passiert, wenn ich in der Warnmeldung auf "OK" klicke. Ich verwende LINQ to SQL. Ähnliche Anrufe Controller-Aktionen zu speichern und setzen Sie funktionieren:ASP.NET MVC AJAX Post zu Controller-Aktion funktioniert nicht

$('#DeletePOC').click(function() { 
       if (confirm("This action will delete this POC record permanently. Click OK if you want to delete this record; otherwise, click 'Cancel'")) { 
        disableButton(['#CancelPOC', '#POC']); 
        $.ajax({ 
         url: '@Url.Action("POCDelete")', type: "POST", dataType: "json", 
         data: { 
          SitePOCID: $('#POCId').val() 
         }, 
         success: function (data) { 
          $('#POCStatus').html('<div class="success">POC Removed Successfully.</div>'); 
         }, 
         error: function() { 
          $('#POCStatus').html('<div class="field-validation-error">Some Error Occured in Removing POC.</div>'); 
         } 
        }); 
       } 
      }); 

-Controller: ich während debug getestet haben, dass App nicht auf diese Aktion-Methode bekommt:

[HttpPost] 
public ActionResult POCDelete(int id) 
{ 
    db.POC_dsp(id); 
    return Json(""); 
} 

Antwort

8

Sie sollten geben Sie die Daten wie die Funktionsparameter an. In Ihrem Fall sollten Sie Ihre Daten Name ID (nicht SitePocId)

$('#DeletePOC').click(function() { 
      if (confirm("This action will delete this POC record permanently. Click OK if you want to delete this record; otherwise, click 'Cancel'")) { 
       disableButton(['#CancelPOC', '#POC']); 
       $.ajax({ 
        url: '@Url.Action("POCDelete")', type: "POST", dataType: "json", 
        data: { 
         id: $('#POCId').val() 
        }, 
        success: function (data) { 
         $('#POCStatus').html('<div class="success">POC Removed Successfully.</div>'); 
        }, 
        error: function() { 
         $('#POCStatus').html('<div class="field-validation-error">Some Error Occured in Removing POC.</div>'); 
        } 
       }); 
      } 
     }); 
+2

Dank @Anoop sein, kam ich, dass der Parametername in den Daten zu wissen, sollte in der Aktionsmethode die gleiche wie die Parameternamen sein. Dies bedeutet, dass die '@ Url.Action (ActionMethodName)' nach der Aktion sucht, die den gleichen Parameternamen wie im Ajax-Aufruf hat. Aber der Fehlerabschnitt meines obigen Ajax-Aufrufs zeigte keinen Fehler an. Ich nehme an, das hat etwas mit dem Klassennamen des div-Tags des Fehlerbereichs zu tun. – nam