我有以下脚本删除项目,当我点击按钮时我调用该功能。
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错误。
我有以下RouteConfig
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
有什么想法吗?
答案 0 :(得分: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});