2012-10-01 3 views
0

필자는 ASP .Net 응용 프로그램을 유지 관리하고 있습니다. 페이지 추가 사용자를 사용합니다. 나는 재현 할 수 없습니다하지만 난 제출에 미친 듯이 뭔가 할 몇 가지 코드 발견 일으키는 미친 코드는이 코드 조각을 찾으려면__doPostBack을 두 번 실행할 수 있습니까?

function crazy-code() 
{ 
    ... 
    __doPostBack() // 1st 
    ... 
    return true; 
} 

뭔가를 할

if(crazy-code()){ 
    __doPostBack() // 2nd 
} 

을과 문제는, 나는 모두 __doPostBack을 발사하려했지만 나는 그것을 할 수 없었다. 이론적으로 항상 발생해야하는 것은 (__doPostBack)을 발사 할 때 요청을 보내고 나중에 클라이언트 코드를 중지하거나 무시해야한다는 것입니다. __doPostBack이 두 번 해고되는 경우 이유는 무엇입니까? 브라우저? 속도? ???

답변

0

__doPostBack() 호출은 양식을 제출할 것이고 두 번째 호출은하지 않아야합니다.

내가 틀렸을 수도 있지만 웹 페이지에서 '제출'을 누르고 페이지를 새로 고침하면 'F5'를 누르십시오. 브라우저에 따라 "데이터에서 다시 전송 하시겠습니까?"와 같은 메시지가 표시됩니다. "예"를 선택하고 기록이 복제되었는지 확인하십시오.

아무튼 나는 서버 측에 데이터를 삽입 할 때 중복 값에 대한 검사를 추가해야한다고 생각합니다.

+0

I 의한 페이지/프레임을 다시하지만 그렇지 않은 재현. 애드 인 사용자 페이지는 iframe입니다. 예를 들어 파이어 폭스에서는 확인 경고가 표시 될 때 프레임>이 프레임> 프레임 다시로드를 클릭하고 FF로 확인해야합니다. 그리고이 중복 된 레코드를 만드는 것은 아닙니다. – Jaider

0

테스트 코드를 만들 수있었습니다. FF 및 크롬 잘 작동하는 것 같다 (1 제출)하지만 IE9 (및 호환성 버전) 1, 2 또는 3 번 칠 것 같다. 참고 : submit()은 다시 게시를 발생시킵니다. 자바 스크립트 페이지에서 CASE 1. 지연 : 뒤에

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>testing</title> 
    <script type="text/javascript"> 
     function submitForm() { 
      document.forms[0].submit(); 
      alert("delay"); 
      document.forms[0].submit(); 
     } 
    </script> 
</head> 
<body> 
    <form id="form1" name="form1" runat="server"> 
    <div> 
     <asp:TextBox ID="TextBox1" runat="server" Width="220px"></asp:TextBox> 
     <button onclick="submitForm(this)">CLICK</button> 
     <br /> 
     <asp:Label ID="Label1" runat="server"></asp:Label> 
    </div> 
    </form> 
</body> 
</html> 

코드 :

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(IsPostBack) 
    { 
     incrementVal(); 
    } 
} 

private void incrementVal() 
{ 
    var val = (int)(Session["val_" + TextBox1.Text] ?? 0); 
    val++; 
    Label1.Text += TextBox1.Text + ": " + val.ToString("00") + " - " + DateTime.Now.ToLongTimeString() + "<br/>"; 
    Session["val_" + TextBox1.Text] = val; 
} 

enter image description here

CASE 2 : 느린 응답

제거 JS 경고 :

function submitForm() { 
    document.forms[0].submit(); 
    document.forms[0].submit(); 
} 
서버 측에서 515,

추가 지연 :

if(IsPostBack) 
{ 
    incrementVal(); 
    Thread.Sleep(500); 
} 
관련 문제