When I try to use the DELETE verb I either get a null parameter or the controller doesn't fire.
First I tried this:
[HttpDelete]
public IHttpActionResult Delete(Announcement announcement) {
_unitOfWork.Announcements.Remove(announcement);
_unitOfWork.Complete();
return Ok();
}
The controller fires, but announcement
is null
. If I check on the client side the parameter is not null, it is a properly formed object.
If I add a Route
attribute like the below, then the controller doesn't fire at all.
[HttpDelete]
[Route("api/announcements/{announcement}")]
public IHttpActionResult Delete(Announcement announcement) {
_unitOfWork.Announcements.Remove(announcement);
_unitOfWork.Complete();
return Ok();
}
The client side is initiating the DELETE
via angular.
myAPIservice.DeleteAnnouncement = function (announcement) {
console.log('In myAPIservice DeleteAnnouncement');
console.log(announcement);
return $http.delete(serviceURLRoot + 'api/announcements/', announcement, { withCredentials: true }).success(function (data) {
console.log('myAPIservice.DeleteAnnouncement Success');
});
};
EDIT ---
The Announcement class:
public class Announcement {
public int AnnouncementId { get; set; }
public string AnnouncementText { get; set; }
}