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으로 설정한다.