我使用ajax在我的web api控制器中调用删除操作。
下面是我的api代码:
[Authorize]
public class AttendancesController : ApiController
{
private readonly ApplicationDbContext _context;
public AttendancesController()
{
_context = new ApplicationDbContext();
}
[HttpDelete]
public IHttpActionResult Delete(int gigId)
{
var userId = User.Identity.GetUserId();
var attendance = _context.Attendances.SingleOrDefault(a => a.GigId == gigId && a.AttendeeId == userId);
if (attendance == null)
{
return NotFound();
}
_context.Attendances.Remove(attendance);
_context.SaveChanges();
return Ok();
}
}
当我使用这个javascript代码时,我的操作调用和一切都是正常的。
$.ajax({
url: "/api/attendances/?gigId=" + button.attr("data-gig-id"),
method: "DELETE"
})
.done(function () {
button
.removeClass("btn-info")
.addClass("btn-default")
.text("Going ?");
})
.fail(function () {
alert("Something is failed!");
});
但是当我使用这段代码时,我的api不调用,并且执行fail callback方法。
$.ajax({
url: "/api/attendances/" + button.attr("data-gig-id"),
method: "DELETE"
})
.done(function () {
button
.removeClass("btn-info")
.addClass("btn-default")
.text("Going ?");
})
.fail(function () {
alert("Something is failed!");
});
我很困惑,因为第二种呼叫方法在一部学习电影中使用,而且它很有效。
你能解释一下这个问题吗?
您应该为控制器中的操作添加路由
[Route("attendances/{gigId}")] public IHttpActionResult Delete(int gigId) { // Your code }