2012-09-12 1 views
0

양식과 제출 버튼이있는 웹 페이지가 있고 서버 측에서는 세션 값을 사용하여 양식 제출을 두 번 방지합니다. 세션의 초기 값은 0입니다. 사용자가 제출 버튼을 클릭하면 1로 바뀌고, 제출 버튼을 누르면 세션 값이 먼저 확인됩니다.asp.net 양식을 두 번 제출했습니다.

그러나 우리 프로젝트가 출판되었을 때 같은 사람에 대해 두 개의 레코드가 있다는 것을 알았습니다 (즉, 두 번 제출했음을 의미합니다. 한두 명의 사람에게는 매우 자주 발생하지는 않습니다). 시간 간격 이 두 레코드 사이에 0.3 초와 같이 매우 작습니다. 처음에는 제출 버튼을 두 번 클릭 할 수 있다고 생각했지만 컴퓨터에서 한 번만 레코드를 데이터베이스에 삽입했습니다.

나는 혼란 스럽습니다. 어떻게 될까요? 여기

코드입니다 : 그 세션 값을 확인 후 프로그램이 다른 페이지로 사용자를 이동하지만 제출 프로세스를 종료하지 때문에

 protected void Page_Init(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      Session["IsBackForwordPayment"] = 0; 
     } 
    } 

    protected void submit_Click(object sender, EventArgs e) 
    { 

     if (Session["IsBackForwordPayment"] != null && Session["IsBackForwordPayment"].ToString() != "0") 
      Response.Redirect("~/pages/renewal/duplicaterenewal.aspx"); 

....... 
} 

이 가능 ??

+0

페이지에 ImageButton이 있습니까? http://stackoverflow.com/questions/1498269/asp-net-double-click-problem –

+0

Response.Redirect ("string")은 자동으로 Response.End()를 호출하므로 실행이 중지되어야합니다. 여러 번 클릭하지 않았습니까? 양식을 수행하는 페이지의 자바 스크립트는 무엇입니까? 또한 ... 그것은 UpdatePanel (AJAX) 안에 있습니까? 아니면 그냥 표준 Webforms? – theyetiman

+0

@theyetiman 나는 여러 번의 클릭을 시도했지만 모든 것이 정상이며 표준 웹폼 – pita

답변

0

는 현재 페이지의 실행을 중지합니다

Response.Redirect("~/pages/renewal/duplicaterenewal.aspx", true); 

을보십시오.

+0

실제로이 방법이 해결책인지 확인하지 못하고 오류를 반환하려고했지만 항상 내 컴퓨터에서 정상적으로 작동합니다. 사용자가 무슨 일을했는지 ​​전혀 모르겠다. – pita

+0

그래, 현재는 Response.Redirect 코드가 실행되지만 후속 코드는 다음 페이지가로드 될 때까지 실행됩니다. 사용자의 경우에서 본 조건을 생성 할 수있는 Response.Redirect 뒤에 코드가 있습니까? – chead23

0

분명히 Response.End()는 코드 실행을 중단하지 않습니다. 여기이 발견 :

Response.Redirect not ending execution

당신은 당신이 Response.Redirect()을 한 후 실행을 종료하는 return 문을 추가해야합니다.