2014-12-12 4 views
1

CRUD 작업을 수행하기 위해 Entity Framework를 사용하여 MVC에서 웹 응용 프로그램을 만들었습니다. 언제 내가 모든 레코드를 삭제하면보기가 삭제되고 그 레코드를 삭제할 수있게됩니다. 하지만 그 대신 내가 자바 스크립트를 통해 "이 레코드를 삭제 하시겠습니까"라는 경고 상자를 갖고 싶습니다. 그런 다음 다른 페이지로 사용자를 이야기하지 않고 레코드를 삭제하려고합니다. 나는 다음과 같은 옵션이 있지만이 도움이되지를 사용하고Javascript에서 URL을 정의하여 Controller에있는 ActionResult methode를 호출하는 방법

은 ...

$(function() { 
    $('table.dataList tbody a[linktype="Delete"]').click(function (e) { 
     e.preventDefault(); 
     $.ajax({ 
      type: 'POST', 
      url: '/DepartmentController/DeleteConformed/', 
      dataType: 'script', 
      success: function() { 
       alert('Are you sure you want to Delete this Department'); 
      }, 
      error: function (req, status, err) { 
       alert(err); 
      } 
     }); 
    }); 

그것은라는 오류를 캐싱 "찾을 수 없습니다". 나는 URL을 쓰는 동안 어떤 실수를하고 있나.

+0

도움이 SO 후, http://stackoverflow.com/questions/26451049/mvc5-controller-action-을 참조하십시오 not-from-json-ajax-post/26451584 # 26451584. – Venkat

답변

4

success 이후에 후에 서버에 대한 요청이 이미 전송되고 레코드가 이미 삭제되었습니다.

일반적으로 window.confirm 메소드를 사용하여 전에 사용자가 Ajax 요청을 수행하는지 확인해야합니다. 같은

뭔가 :

$('table.dataList tbody a[linktype="Delete"]').click(function (e) { 
    if (!window.confirm("Are you sure you want to delete this Department?")) 
     return; 

    e.preventDefault(); 

    $.ajax({ 
     type: 'POST', 
     url: '/DepartmentController/DeleteConformed/', 
     dataType: 'script', 
     success: function() { 
      alert('Department deleted successfully'); 
     }, 
     error: function (req, status, err) { 
      alert(err); 
     } 
    }); 
}); 

Documentation

+0

URL 줄을 설명해주십시오. url : '/ Department/DeleteConformed /' –

+0

@NikhilSaswade, 무엇을 의미합니까? 그것이 Ajax 요청의 URL입니다 ... – haim770

0

사용 JQuery와 대화 상자를 참조하십시오.

<div id="confirm-dialog"></div> 

과 기능을 변경 :

$('table.dataList tbody a[linktype="Delete"]').click(function (e) { 
    e.preventDefault(); 
    $("#confirm-dialog").dialog({ 
     title: "Are you sure you want to delete this Department?", 
     autoOpen: false, 
     modal: true, 
     height: 'auto', 
     close: function() { 
      $(this).dialog("close"); 
     } 
    }); 

    $("#confirm-dialog").dialog({ 
     buttons: { 
      "OK": function() { 
       $.ajax({ 
        type: 'POST', 
        url: '/DepartmentController/DeleteConformed/', 
        dataType: 'script', 
        success: function() { 
         alert('Are you sure you want to Delete this Department'); 
        }, 
        error: function (req, status, err) { 
         alert(err); 
        } 
       }); 
      }, 
      "Cancel": function() { 
       $(this).dialog("close"); 
      } 
     } 
    }); 
}); 
+0

콘솔 삭제를 클릭하면이 표기법을 제공합니다 : (...) 대화 상자가 없습니다. 설명 해주십시오. –

+0

뷰 머리글에 jquery 대화 상자가있는 스크립트를 추가합니까? 이런 종류의 문제처럼 보입니다. –

+1

jquery 대화 상자의 경우 jquery-ui.js 파일을 확인하십시오. – Venkat

0

Currenty 당신이하고있는 것은 액션 메소드를 호출하고 만 확인 대화 상자 쇼 그 이후 당신의보기 추가합니다. 나는 당신이 그 반대를 필요로한다고 생각한다. 보기에 사용자가 특정 레코드를 삭제하도록 안내하는 단추가 있다고 가정하면이 작업을 수행 할 것입니다. 첫째, 클라이언트 측에서는 사용자에게 확신 여부를 물어보고 해당 기능에 대한 onclick 버튼을 설정하는 기능이 있습니다.

function confirmDelete(){ 
    $('<div id="dialog">').dialog({ 
      text:"Are you sure you want to delete?", 
      modal:true, 
      buttons:[{ 
       text: 'Yes', 
       click: yesDeleteIt() 
       }, 
      { 
       text: 'No', 
       click: function() 
       { 
        $(this).dialog('close'); 
       } 
      }] 
     }) 
} 

그리고 AJAX 당신이 갈 수 있습니다 yesDeleteIt 기능에

:

function yesDeleteIt(){ 
    url= '/Department/DeleteConformed/'; 
    $.post(url);// 
    } 
+0

URL을 정의하는 방법을 알려주십시오. 나는 url = '/ controllername/actionname'을 의미하는 것입니까? –

+0

그것이 올바른지 100 %의 시간은 낙관적이라고 말할 수 있습니다. 그러나 일반적으로, 대부분의 경우 예, 맞습니다. 100 % 작동하도록하려면 면도기에 '@ Url.Action ("ActionName", "ControllerName")'을 입력하고 매개 변수로 함수에 보낼 수 있습니다. –

관련 문제