Вызов методом удаления через 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){
...
}