본문 바로가기
IT-개발,DB

[IT] ASP.NET 자바스크립트 submit() 함수기능

by SB리치퍼슨 2010. 4. 20.


__doPostBack()Page.GetPostBackEventReference()함수


ASP.NET 개발을 할 때 submit() 기능을 사용하려고 하면 에러가 발생하는 경우가 있다.
이럴 때 버튼 이벤트 등을 이용해서 자바스크립트로 Behind code(.cs)의 메서드를 실행해야할 때가 발생한다.

이럴 경우 보통은 aspx 화일에서 자바스크립트로 __doPostBack() 메서드를 정의해서 사용하면 가능한다.
하지만, 이보다 더 좋은 방법이 있다.

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

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

<%= Page.GetPostBackEventReference( btnOk2 ) %>

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

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

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

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

 

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

private void btnOk2_Click(...)
{
    ...
}


other ex)
[pageB.aspx]

<script language="javascript">
    function Dosomething()
    {
 // ...
        <%= Page.GetPostBackEventReference( btnOk ) %>
 // 여기에 __doPostBack('btnOk', ''); 를 사용해도 가능하다.
    }
</script>

 <asp:Button ID="btnOK" runat="server" OnClick="btnOk_Click" />


[pageB.aspx.cs]

protected void btnOk_Click(object sender, EventArgs e)
{
    // ...
}


참고 :  Page.GetPostBackClientHyperlink()

HyperLink나 LinkButton의 출력결과처럼 a tag에서 __doPostBack() 메서드를 호출할 수 있도록 javascript: 문자가 앞에 붙게 됩니다.

반응형

댓글