2017-01-03 53 views
0

我有下面的腳本來刪除一個項目,當我點擊按鈕時我調用該函數。調用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"); 
       } 
      } 
     }); 
    } 
} 

操作方法

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

按鈕

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

但是,每次我點擊該按鈕它返回我一個404錯誤。

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

我有以下RouteConfig

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

任何想法?

回答

2

你應該正確的控制器名稱添加到您的路由,在你的路由表,你現在所擁有的是什麼首頁只控制器:

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

但在你的Ajax調用您調用另一個名爲控制器ManageGadget

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

,所以你需要添加這樣的另一條路線:

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