2009-09-17 6 views
0

저는 ASP.NET C#에서 작업합니다. 언더 버튼 클릭 이벤트에서 뭔가 잘 저장하려고하지만 브라우저의 새로 고침 버튼을 누른 후이 이벤트가 다시 발생하여이 이벤트를 중지하고 싶습니다.원치 않는 포스트 백을 중지하는 방법

+1

@Jame : 답변이 도움이된다면 항상 답을 표시하십시오. 18 개의 질문을 게시하고 답변을 표시하지 않았습니다. –

답변

7

이 주제에 대한 기사. INSERT 명령 호출 후

Preventing Duplicate Record Insertion on Page Refresh

접근법 1

간단한 해결책은 다시 동일한 페이지 Response.Redirect를이다. 그러면 게시물 헤더 이 전송되지 않고 페이지 이 호출됩니다. Response.Redirect의 첫 번째 매개 변수로 Request.Url.ToString()을 사용하면 URL과 페이지의 쿼리 문자열이 모두 이됩니다. false를 두 번째 매개 변수로 사용하면 ThreadAbortedException이 발생하는 자동 응답을 억제 할 수 있습니다. . 이 방법의 단점은 빌드 된 ViewState가 손실된다는 것입니다.

접근법 2

형태는 중간 처리 페이지에 입력하여 다시 호출 페이지 Response.Redirect를하기위한 관련 방법이 될 고전 ASP 방식과 유사하게 형성 처리. 이는 Button_Click 이벤트에서 Response.Redirect를 사용하는 것과 동일한 효과가 있으므로 웹 사이트 개발자가 관리 할 다른 페이지를 만드는 것과 같은 단점이 있기 때문에 동일한 단점이 있습니다.

접근 3

솔루션의 다음 배치는 사용자가 양식의이 제출 '버튼을 누르는 대신 브라우저 에서 페이지를 새로 고침이 있는지 여부를 결정 으로 작동합니다. 이 모든 솔루션은 웹 사이트에서 세션 변수를 사용할 수 있는지에 따라 달라집니다. 웹 사이트에서 쿠키 기반 세션을 사용하지만 사용자 브라우저에 쿠키가 허용되지 않으면 이러한 솔루션이 모두 실패합니다. 또한 세션이 만료되면 도 실패합니다.

접근 4

사용자가 어떻게 든 위에서 언급 한 솔루션은 위의 을 설명 우회 으로 관리해야 수비의 마지막 줄은 데이터베이스에 있습니다. 중복 레코드가 데이터베이스에 삽입되는 것을 방지하기 위해 사용할 수있는 두 가지 방법이 있습니다 ( ). 각 방법의 경우, 지금과 관련된 더 처리 단계가 있기 때문에 나는, 저장 절차에 SQL 코드를 이동 한 이러한 은 별도의 저장 프로 시저 설명하기가 더 쉽습니다. 그러나 저장 프로 시저는 이 아니므로이 방법을 사용하려면 작업을 수행해야합니다.

관련 문제