提问者:小点点

在ASP.NET MVC中使用Ajax调用删除操作的问题


我使用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!");
  });

我很困惑,因为第二种呼叫方法在一部学习电影中使用,而且它很有效。

你能解释一下这个问题吗?


共1个答案

匿名用户

您应该为控制器中的操作添加路由

[Route("attendances/{gigId}")]
public IHttpActionResult Delete(int gigId)
{
    // Your code
}