2017-01-03 4 views
0

Ich habe das folgende Skript, um ein Element zu löschen, und ich rufe diese Funktion, wenn ich auf die Schaltfläche klicken.Nicht gefunden beim Aufruf von POST ActionResult

JQuery

function deleteGadget(guid) { 
    if (confirm("Delete selected gadget?")) { 
     $.ajax({ 
      url: "/ManageGadget/Delete?id=" + guid, 
      type: "POST", 
      success: function (data) { 
       if (data.message == "1") { 
        alert("Deleted"); 
       } else { 
        alert("Something is wrong"); 
       } 
      } 
     }); 
    } 
} 

Aktion Methode

[HttpPost] 
public void Delete(string id) { 
    repo.DeleteGadget(id); 
} 

Knopf

<button type="button" class="btn btn-danger btn-xs" 
    onclick="deleteGadget('84640690-9563-418A-AF68-D1823D5EB23D');"> 
    <span class="glyphicon glyphicon-trash"></span> 
</button> 

Aber jedes Mal wenn ich klicken Die Schaltfläche gibt mir einen 404 Fehler zurück.

GET http://gadgetsitecore/sitecore/service/notfound.aspx?item=%2fmanagegadget%2fdelete&user=extranet%5cAnonymous&site=website 404 (nicht gefunden)

Ich habe die unten RouteConfig

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

Jede Idee?

Antwort

2

Sie sollten den richtigen Controller-Namen zu Ihrem Routing in Ihrer Routing-Tabelle hinzuzufügen, was Sie jetzt haben, ist Startseite Controller nur:

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

aber in Ihrem Ajax rufen Sie einen anderen Controller rufen genannt ManageGadget:

url: "/ManageGadget/Delete?id=" + guid 

so benötigen Sie eine andere Route wie folgt hinzuzufügen:

routes.MapRoute("ManageGadget", "ManageGadget/Delete", 
new {controller = "ManageGadget", 
action ="Delete", 
id=UrlParameter.Optional}); 
Verwandte Themen