2016-10-04 2 views
-2

내 프로젝트에는 C# button_Onclick 처리기가있는 asp 버튼이 있습니다. 문제는 HTML에서 버튼을 클릭하면 이벤트가 브라우저에 보관됩니다. 예를 들어, 브라우저를 새로 고침하면 이벤트가 전송됩니다. return;을 button_Onclick 처리기의 끝에 추가하고 thebutton_Onclick 처리기의 JavaScript를 호출하려고 시도했지만 모두 실패합니다.버튼 클릭 이벤트를 삭제하는 방법은 무엇입니까?

ASP :

<asp:Button ID="btnSubmit" runat="server" Text="Save" /> 

C 번호 : 브라우저의 행동 및 재생에 행동하는 방법을 버튼을 클릭하면

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    ....... 
    return; 
} 
+0

자바 스크립트로해야합니다 –

+0

aspx 코드에 btnSubmit_click이 등록되어 있지 않습니다. 결코 부름을받지 않을 것입니다. 그리고 이벤트가 브라우저에 의해 유지된다는 것은 무엇을 의미합니까? –

+0

@PratikGaikwad 1) page_load에 등록되었습니다. 2) 브라우저를 새로 고침하면 이벤트가 다시 전송됩니다. –

답변

0

코드를 가정하면 POST 요청을 만드는이입니다. 제출 된 데이터를 서버로 다시 보내야합니다. 이 문제를 피하려면 제출 처리기 메서드에서 처리기가 수행 한 작업을 수행 한 후에 다른 URL로 리디렉션해야합니다.

예를 들어 form.asp이 양식을 표시하는 경우 처리기에서 form.asp?message=thankyou (다른 URL을 확인)으로 리디렉션 할 수 있습니다. 그러면 새로 고침시 브라우저에서 서버로 양식이 다시 전송되지 않습니다.

또한 303 리디렉션을 사용하는 것이 가장 좋습니다.

0

이 문제를 피하려면 다른 페이지로 리디렉션해야합니다.하지만 해결 방법을 계속 사용하려면 다음과 같이하십시오.

pageload_Event에서 dateTime을 캡처하십시오. ViewState를 Variable.You에 Page_PreRender 이벤트 복사 sessionVariable에서

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     Session["update"]=Server.UrlEncode(System.DateTime.Now.ToString()); 
    } 
} 

는 페이지 수명주기에 대한 명확한 이해를 얻기 위해 다음 참조 할 수 있습니다. 두 값이 동일한 경우 " http://www.codeproject.com/Articles/667308/ASP-NET-Page-Life-Cycle-Events는"
public void Page_PreRender(object obj, EventArgs e) 
    { 
     ViewState["update"] = Session["update"]; 
    } 

지금 클릭 이벤트에 귀하의 버튼에 블록으로의 ViewState ANS 세션 variable.Allow을 비교합니다.

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    if (Session["update"].ToString() == ViewState["update"].ToString()) 
     { 
     try 
     { 
      -----------Your Logic 
     } 
     finally 
     { 
      Session["update"]=Server.UrlEncode(System.DateTime.Now.ToString()); 
     } 
     } 
} 
+0

와우, 코드가 너무 많습니다. onclick 메소드가'event.preventDefault(); '를 수행하기 위해 javascrtip 함수를 호출 할 수 있습니까? –

+0

예. ScriptManager 클래스 –

+0

을 사용하여 클라이언트 측 스크립트를 등록하는 것으로 가능합니다. 그러나 js 함수의 코드는 무엇입니까?단순히'return false'를 반환합니까? 'event.preventDefault();'? 이 일을하려고 할 때 아무것도하지 않습니다 ... –

관련 문제