글 작성자: 써니루루

ASP.NET Page.GetPostBackEventReference()를 이용한 doPostBack

 

자바스크립트로 behind code의 메서드를 실행하고 싶은 경우가 있다.


이럴 경우 보통은 스크립트에서 __doPostBack() 메서드를 정의해서 사용하곤 한다. 하지만, 이는 좋지 못한 방법이다.

 

__doPostBack() 메서드는 .net에서 자동 생성하는 부분으로, 개발자가 별도로 작성하여도 바뀔 가능성이 있다. 또한, .net에서 자동으로 생성하지 않는 경우도 발생한다.

 

스크립트로 behind code의 메서드를 실행하고 싶을 때는 아래와 같은 방법을 권한다.

 

<%= Page.GetPostBackEventReference( WebFormButton ) %>

 

이는 postback이 발생하는 WebForm Control을 매개변수로 넘겨주면, 자동으로 __doPostBack()을 생성해 준다.


ex)
[Page.aspx]
btnOne -> HTML Input 컨트롤 - visible

<script language="javascript">
    function btnOneClick()
    {
        <%= Page.GetPostBackEventReference( btnTwo ) %>
    }
</script>

 

<input type="button" onclick="btnOneClick()">

 

[Page.aspx.cs]
btnTwo -> WebForm Button 컨트롤 - invisible

private void btnTwo_Click(...)
{
    ...
}

 

 

[추가사항 1]

onunload 이벤트시 처리하려면, btnTwo를 LinkButton으로 설정한다.