Вызов методом удаления через WebApi с использованием AJAX

Я использую WebApi в веб-приложении ASP.Net. У меня есть метод в контроллере под названием Delete и я хочу получить доступ к этому методу с помощью метода JJuery AJAX. Ниже мой код:

[Authorize]
public int Delete(int proposalId)
{
    // logic here...     
}
$.ajax({
    url: "/Controller/Proposal/" + proposalId,
    type: "Post",
    contentType: "application/json",
    success: function() {
        bootbox.alert("Proposal deleted successfully.");
        ReloadGrid();
    },
    error: function() {
    }
});
RouteTable.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "controller/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);
<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"></modules>
</system.webServer>

Проблема в том, что когда я использую POST он выполняет другой метод, который начинается как Post. Может кто-нибудь, пожалуйста, помогите мне с этим?

2 ответа

Предполагая, что это доступ к REST API, вам нужно отправить DELETE запрос, установив соответствующий type в вашем $.ajax вызов:

$.ajax({
    url: "/Controller/Proposal/" + proposalId,
    type: "DELETE", // <- Change here
    contentType: "application/json",
    success: function() {
        bootbox.alert("Proposal deleted successfully.");
        ReloadGrid();
    },
    error: function() {
    }
});

Если вам нужно использовать пользовательский метод для удаления, например, вы всегда можете положиться на установку атрибутов HTTP - например, так:

[HttpDelete]
[Route("api/Proposal")]
public IHttpActionResult Proposal(long id){
   ...
}
Другие вопросы по тегам