2009-09-23 2 views
0

저는 원래 아웃소싱 회사에서 만든 ASP.NET 웹 응용 프로그램을 유지 관리하고 있지만 현재 사내에 있습니다. 이전 개발자들이 포스트 백 이벤트를 처리하는 것처럼 보이는 여러 자바 함수를 마스터 페이지에 추가 한 것으로 나타났습니다.ASP.NET 웹 응용 프로그램에 Javascript 포스트 백 기능을 추가 할 때의 문제점은 무엇입니까?

:

<asp:Button ID="btnSave" runat="server" Text="Save Record" Font-Names="Verdana" Width="115px" OnClientClick="ValidatePostBack();" Font-Size="9pt"/>

지금까지 내가 말할 수있는 기능은 다음을 수행 -이 기능은 코드에서 호출하는 방법의 예는 여기

var isPostBackEvent=false; 

    function ValidatePostBack() 
    { 
     isPostBackEvent=true; 
    } 

    function SetPageModified() 
    { 
     setContainerFieldValueById('ctl00_','pageModified', trueString()); 
    } 

그리고 - 여기에 코드 샘플입니다

  • SetPageModified : 전체 웹 페이지가 사용자에 의해 수정되었는지 여부를 나타내는 플래그를 웹 서버 컨트롤에 추가합니다.

  • ValidatePostBack : 포스트 백 이벤트가 발생했는지 여부를 나타내는 플래그를 웹 서버 컨트롤에 추가합니다.

나는 두 가지를 알아 내려고 노력하고있어 -

그들은 그냥 간단하게 대신 .NET 포스트 백 이벤트를 사용하여 처리 할 수있을 때 누군가가 이러한 유형의 이벤트를 추가하는 이유
  • ?

  • 그리고 이러한 자바 스크립트 포스트 백 이벤트가 .NET 포스트 백 이벤트를 방해하는지 여부를 결정합니다.

+0

코드 뒤에 클래스에있는 것이 있습니까? 그들의 page_load에 if (IsPostback) 코드가 포함되어 있습니까? –

+0

코드는 매우 독립적입니다. 필자에게는 큰 그림이 없지만 그러한 구현의 효율성에 대해서는 나쁘다. –

+0

예, 코드 숨김에 (isPostback) 코드가 있습니다. 또한 모든 웹 서버 컨트롤에 Javascript 이벤트를 추가했습니다. TxtSurname.Attributes.Add ("onChange", "SetPageModified();"). – Spacehamster

답변

0

글쎄, 그들이 원래의 코드를 쓸 때 원래 개발자가 단순히 잘 포스트 백/서버 이벤트 모델을 이해하지 못했다 전적으로 가능 첫 번째 포인트 - 내 여행의 경우 많이 봤어요 여기서 사람들은 ASP.NET 프레임 워크의 일부를 다시 발명했습니다. 왜냐하면 사람들은 out-of-the-box를 수행하는 방법을 모르기 때문에 ASP.NET 프레임 워크의 일부를 다시 발명했습니다.

비록 그들이 따라갈 때 더 많이 배우더라도 어쨌든 코드를 그대로 남겨 두었을 것입니다. 제거하면 아마도 다른 것을 망가뜨릴 수 있습니다.

왜 코드를 없애고 무엇이 손상되는지보십시오. 카드 하우스가 무너지면 지역 변경 사항을 취소하십시오. 해를 입지 마십시오. 그래도 깨진 창은있을 수 있으므로 조심해야하지만 자신의 샌드 박스에서 놀아 다칠 수는 없습니다.

서버 바인딩 양식의 경우 OnSubmit 또는 양식 제출 중에 숨겨진 필드 값으로 __EVENTTARGET 및 __EVENTARGUMENT를 사용하는 경우와 같이 클라이언트 구성 요소 처리기를 기존 요소에 덮어 쓰면 다시 게시 메커니즘이 작동하지 않을 수 있습니다. 여분의 클라이언트 이벤트 핸들러를 버튼에 추가하는 것만으로 포스트 백 메커니즘을 손상시키지 않습니다.

완전한 코드를 보지 않고서는 훨씬 더 많이 말할 수 없습니다.

+0

제안 해 주셔서 감사합니다.마지막으로 Document 윈도우를 수정 한 후에 Javascript Postback 이벤트 처리를 마친 후에 Javascript Postback 코드를 제거했습니다. – Spacehamster

관련 문제