2017-12-08 27 views
-1

나는 항상 삭제 요청이 "DELETE"유형을 사용하여 수행되어야한다고 생각 해왔다.asp.net MVC에서 AJAX DELETE 요청

[HttpGet] 
    public JsonResult DeleteTest() 
    { 
     int id= Int32.Parse(Request["id"]); 

     var myTableTest= db.myTable.Where(x => x.id== id).FirstOrDefault(); 
     db.mytable.Remove(myTableTest); 

     db.SaveChanges(); 
     return Json(true, JsonRequestBehavior.AllowGet); 
    } 

이 코드는 잘 작동 : 그러나, 컨트롤러가

$.ajax({ 
    type: "GET", 
    url: '/TestController/DeleteTest?id=10', 
    contentType: 'application/json; charset=utf-8', 
    success: function (data) { 
     if (data) { 
      // Works 
     } 
    }, 
    error: function (erro) { 
     console.debug(erro); 
    } 
}); 

.NET

에서 작동하지 않을 것 같다! 그러나 "DELETE"를 입력하면 더 이상 작동하지 않습니다. 그래서, asp.net HttpDelete 있나요? 우리는이 특별한 경우에 당신이 HttpPost하지 HttpGet 사용해야 HttpGet하고 HttpPost

감사

asp.net-MVC에서
+0

작품 미세 :

당신은 당신이 대신 [HttpDelete]에 속성을 변경해야 DELETE에 대응하려면? 당신은'DeleteTest'라는 메서드를 호출했지만'DeleteForm'이라는 이름을 보여주었습니다 –

+1

[jQuery에서 PUT/DELETE 요청을 보내는 방법?] (https://stackoverflow.com/questions/2153917/how- to-send-a-put-delete-request-in-jquery) – Naeem

+0

메소드 이름에 대해서는 잘못 입력 한 것입니다. 그것은 실제로 내 질문이 아니었다. – user6824563

답변

2

귀하의 방법은 [HttpGet] 속성으로 장식되어 있습니다. 이것은 GET 동사가 사용 된 경우에만 메서드를 고려해야한다는 것을 프레임 워크에 알립니다.

[HttpDelete] 
public JsonResult DeleteTest() 
{ 
    ... 
} 
0

, 그렇지 않으면 누군가는 기록의 삭제를 요청하는 쿼리 문자열과 URL을 공격하고 있습니다 또 다른 한가지는 올바른 URL을 생성하기 위해주의를 기울이는 Url.Action 메서드를 사용하는 대신 URL을 생성하는 마법 문자열을 사용하지 않는 것입니다. 액션 사용 HttpPost

$.ajax({ 
    type: "POST", 
    url: '@Url.Action("DeleteTest","Test")', 
    data: {id:10}, 
    contentType: 'application/json; charset=utf-8', 
    success: function (data) { 

다음과 같이 당신의 액션 메소드 서명에 매개 변수를 추가 :

포스트 사용하도록 JQuery와 아약스 호출을 변경

[HttpPost] 
public JsonResult DeleteTest(int id) 
{ 

    var myTableTest= db.myTable.Where(x => x.id== id).FirstOrDefault(); 
    db.mytable.Remove(myTableTest); 

    db.SaveChanges(); 
    return Json(true, JsonRequestBehavior.AllowGet); 
} 

그것이 도움이되기를 바랍니다.

1

[HttpGet] 대신 [HttpDelete] 속성을 사용하여 작업을 꾸미기 만하면됩니다. 또한 JsonResult 대신 ActionResult을 반환하고 성공적으로 반환 된 결과를 ajax 호출이 제대로 이해할 수 있도록 new HttpStatusCodeResult(200)을 반환하도록 설정했습니다.