2011-10-06 6 views
4

그래서 사용자가 페이지를 떠날 때 두 가지 작업을 수행해야합니다. JQuery window.unload로 해당 이벤트를 캡처 할 수 있다고 추측합니다. 그러나 일부 데이터를 다시 데이터베이스에 저장하는 방법을 모르겠습니다.ASP.NET MVC - 페이지 언로드

나는 다른 행동이나 그와 비슷한 것을 불러도 좋지만 나는 그들이 가고있는 페이지로 이동하는 것을 멈추고 싶지 않다.

아이디어가 있으십니까?

업데이트 : 솔루션 여기

내가 갔다 솔루션이다 (나는 :) 오류가 나중에 조금을 처리하는 더 좋은 만들 것이다).

삭제 작업을 수행해야하므로이 게시물을 읽은 후 몇 가지 추가 보안 기능을 추가했습니다. 뷰에서 http://stephenwalther.com/blog/archive/2009/01/21/asp.net-mvc-tip-46-ndash-donrsquot-use-delete-links-because.aspx

:

$(window).unload(function() { 
    var ajurl = "/Assignments/unlockAssignment/" + '@model.ID' + "/"; 
    $.ajaxSetup ({ 
     cache: false 
    }); 

    $.ajax({ 
     type: "DELETE", 
     url: ajurl, 
     error: function (xhr, status, error) { 
      //do something about the error 
      alert('error'); 
     }, 
     success: function(){ 
     alert('Data Saved:'); 
     } 
    }); 
}); 

당신은 단지 $에 아약스 요청을 발사 할 수

<AcceptVerbs(HttpVerbs.Delete)> 
<Authorize()> 
Function unlockAssignment(ByVal id As Integer) 
    Dim ass As Assignment = db.Assignments.Find(id) 

    Dim lck = From a In db.AssignmentLocks 
        Where a.ID = ass.Lock.ID 
        Select a 

    db.Entry(lck.FirstOrDefault).State = EntityState.Deleted 
    db.SaveChanges() 

End Function 

답변

4

감사관 (창) .unload은() - 나는 그것이 방해 것이라고 생각하지 않는다 사용자.

그러나 아약스 호출 결과를 확인할 수는 없다고 생각합니다. 즉, 콜백을 통해 반환 된 데이터를 처리합니다. 나는 그 페이지가 그때까지 "움직였다"고 가정한다. "화재와 잊기"로 접근하십시오.

ajax 호출이 성공했는지 확인하거나 반환 된 데이터를 처리해야하는 경우 언로드하기 전에 수행 할 방법을 찾아보십시오.

+0

화재와 잊지 말고 괜찮습니다. 다른 사용자가 열어 본 경우 다른 사용자가 레코드를 편집 할 수 없도록 잠금 기능을 구현하려고합니다. 전에 Ajax를 사용하지 않았습니다. 누군가 간단한 예제를 제공 할 수 있습니까? – Tom

+0

@Tom : http://www.asp.net/mvc (http://www.asp.net/mvc)에서 복수형 비디오를 확인하십시오 (무료이며 아주 좋은 출발점입니다). –

+0

나는 PHP로 이것을했지만. 별로 차이가 없다 - 핵심은'$ (window) .unload()'를 사용하고 있었고 실제로 요청이 이루어지지 않았다고 가정했다. 그것은 잘 작동하는 것 같았다. – Cymen

관련 문제