2008-10-03 2 views
3

연락처 및 고객과 같은 특정 비즈니스 엔터티에 주석을 추가 할 수 있도록 사용자 정의 컨트롤을 만들었습니다. 하나의 문제를 제외하고 훌륭하게 작동합니다.AJAX, 포스트 백 및 브라우저 새로 고침

ListView 컨트롤을 사용하여 동일한 사용자 정의 컨트롤에서 주석을 편집 및 삭제하고 새 주석을 추가 할 수 있습니다. 이 모든 것은 UpdatePanel에 싸여 있습니다.

Screenshot

여기에 데이터가 성공적으로 저장, 내 시나리오는 ... 사용자가 페이지를 다시 게시하지 ... 새로운 코멘트를 추가하고, ListView 컨트롤은 새 코멘트를 표시하도록 업데이트됩니다. 이제 사용자가 브라우저을 새로 고침하면 다시 자연스럽게 다시 게시되고 다른 중복 레코드가 추가됩니다.

이 문제를 방지하는 가장 좋은 방법에 대한 아이디어가 있으십니까?

+0

새 코멘트를 어떻게 추가 하시겠습니까? "주석 추가"버튼 이벤트 핸들러의 일부입니까? – EndangeredMassa

+0

예 ...이 모든 것은 작동하지만 사용자가 브라우저에서 새로 고침 버튼을 누르면 다른 레코드가 추가됩니다. – mattruma

+0

제목 [여기] (http://aspalliance.com/687_Preventing_Duplicate_Record_Insertion_on_Page_Refresh.all)에 멋진 기사가 있습니다. – ballpointpeon

답변

4

을 당신은 Post/Redirect/Get를 사용하여 시도 할 수 무늬. 기본적으로 포스트 백에 데이터를 보내지 않고 페이지로 리디렉션합니다. 이렇게하면 사용자가 새로 고치면 POST가 아니라 GET 명령이 새로 고쳐집니다.


죄송합니다 ... UpdatePanel 조각을 놓쳤습니다. 제출 버튼도 해당 UpdatePanel 내에 있는지 확인하십시오. 페이지를 새로 고침해도 AJAX 호출에는 영향을주지 않지만 버튼이 패널 외부에있을 때 정기적 인 포스트 백이 수행되므로 요청 추가를 다시 보냅니다.

+0

@Wayne AJAX의 모든 목적을 이길 수는 없을까요? 리다이렉트를하면 페이지 전체가 새로 고쳐지지 않겠습니까? – mattruma

+0

이것은 AJAX의 사용을 무효로 할 것입니다. –

+0

나는 이것을 소용돌이 칠 것입니다! – mattruma

0

나는 몇 년 동안 ASP.NET을 사용하지 않은,하지만 당신은 Page.IsPostBack에 "다시 게시에 이렇게"코드를 포장해야합니다

if(IsPostBack) { 
    //do your data-saving code... 
} 

MSDN link

+0

포스트 백을 다시 게시하기 때문에 작동하지 않습니다. –

관련 문제