2012-12-19 3 views
2

앞에 오는 이유! 왜, 어떻게 그들을 순서대로 만들지?나는 Response.Write를하기 전에 코드, 스레드 프로세스를 실행할 때 스레드가 Response.Write를

insertUser.ExecuteNonQuery() 
con.Close() 
Response.Write("Done successfully ...") 
Thread.Sleep(4000) 
Response.Redirect("Default.aspx") 
+0

응답 페이지가 완전히 실행시 이후에 올 것이다. 그리고 asp.net 웹 사이트는 무국적 ptotoc로 작동합니다 –

+1

정확히 여기에서 무엇을하려고합니까? 이렇게하면 페이지에 쓰지 않고 4 초 동안 기다린 다음 리디렉션합니다. HTTP 응답은 그렇게 작동하지 않습니다. 사용자에게 메시지와 새 페이지를 표시하려는 경우 클라이언트 쪽 코드에서 대기/리디렉션을 수행하거나 두 번째 페이지에 메시지를 표시해야합니다. – David

+0

클라이언트/서버가 구조적으로 상호 작용하는 방식에 대해 깊은 오해가 있습니다. 클라이언트 브라우저로 다시 전송되기 전에 코드가 IIS 서버에서 실행 중입니다. – asawyer

답변

0

웹 응답은 WebRequest 클래스의 처리를 완료 한 후 페이지에 얻을 것이다 링크를 의뢰하십시오 코드에 plese을 클라이언트 측 기능을 사용하여 작업을 수행 할 수 있습니다 당신이 할 수있는 즉, 코드가 완료된 후 응답을 봅니다. 코드가 올바른 순서를 수행하고 있습니다. 다음과 같이 Response.End()를 사용하여 테스트 할 수 있습니다.

insertUser.ExecuteNonQuery() 
con.Close() 
Response.Write("Done successfully ...") 
Response.End(); 
Thread.Sleep(4000) 
Response.Redirect("Default.aspx") 
1

응답은 웹 응용 프로그램에서 일회성 작업입니다. "조금만 대답하고, 다른 것을하고, 더 반응 할 수는 없습니다." 당신이 헤더 응답의을 수정 Response.Redirect() 같은 것을 고려할 때 이것은 특히 사실이다. (. 기본적으로 Response.Redirect() 전적으로 사용자가 보지 못할 것이다 있도록 응답에 추가 한 콘텐츠를 "소지품"합니다)

그것은 당신이 여기서 뭘 하려는지처럼 보이는 것은 :

  1. 사용자에게 메시지를 표시합니다.
  2. 잠깐 기다립니다.
  3. 다른 페이지로 사용자를 보냅니다.

이 작업을 수행하는 표준 몇 가지 방법이 있습니다. 1 단계를 포함하는 페이지로 응답하거나 클라이언트 측 코드에서 2 단계와 3 단계를 수행하거나 서버 측 코드에서 3 단계를 수행 할 수 있으며 두 번째 페이지에서 1 단계를 수행 할 수 있습니다. 몇 초 후 메시지가 표시됨).

<script type="text/javascript"> 
    $(function() { 
     $('#dialog-message').dialog({ 
      modal: true, 
      buttons: { 
       Ok: function() { 
        $(this).dialog('close'); 
       } 
      }, 
      close: function() { 
       window.location.href='Default.aspx'; 
      } 
     }); 
    }); 
</script> 
<div id="dialog-message">Done successfully ...</div> 

: 예를 들어

,의 당신은 당신이 뭔가를 포함 할 수 있습니다 다음 페이지 A에서 페이지 B로 사용자를 보내, 몇 초 후에 페이지 A의 메시지를 표시하고 싶은 말은하자 jQuery를 사용하면, 어떤이가하는 것은 사용자에게 의도 된 메시지와 함께합니다 (jQuery UI Dialog 사용) 대화 상자를 표시하고, 사용자가 대화 상자를 닫을 때 다음 리디렉션을 수행한다.

관련 문제