2012. 3. 14. 13:00

이정도 글을 읽으시는 분들이라면 잘 아시겠지만 asp.net나 jsp, php같은 것들은 서버에서 돌아가고 그결과를 HTML형태로 만들어 클라이언트에게 전달합니다.
자바스크립트는 클라이언트에서만 작동하는 스크립트입니다.

두가지의 실행영역이 다르기 때문에 보기에 따라선 이 두가지가 상호작용을 하는 것은 정상적인 구조라고 볼수 없죠.
하지만 실제로 프로젝트를 진행하면 이 두가지의 상호작용에 따라 효율성 차이가 엄청납니다.
그러니 생각보다 자바스크립트로 비하인드 함수를 호출하거나 그 반대의 경우가 많이 발생합니다.

어찌됬건 자바스크립트에서 비하인드코드를 호출하기위해 제가 사용하는 방법은 숨겨진 컨트롤을 호출하는 방법입니다.
말그대로 서버컨트롤을 하나 만들어서 자바스크립트로 해당 컨트롤을 클릭하는 방법입니다.

동작하는 모양을 로그인절차로 예를 들어보면
로그인 버튼 클릭 -> 자바스크립트로 비어있는 값체크 -> 숨겨진 로그인 버튼 호출

도구상자 > 표준 > Button
을 디자이너에 추가 시킨후 클릭이벤트를 생성해 줍니다.

그다음 크기를 0으로 주면 보이지 않는 컨트롤이 됩니다.


정말 안보임 ㅋ

이제 자바스크립트에서 다음과 같은 방법으로 숨겨진 컨트롤을 호출합니다.

<%= Page.GetPostBackEventReference([숨겨진 컨트롤 이름]) %>;

테스트를 해보면 정상적으로 숨겨진 컨트롤의 이벤트가 발생하는 것을 알수 있습니다.



여러 브라우저에서 확인해보니 크기를  0px로 주면 버튼이 보이는 경우가 있더군요 ㅡ.-;;
이럴때는 Visible속성을 false로 주어 화면에 표시되지 않도록 합니다.

좀더 깔끔한 방법을 원한다면 
__doPostBack('<%=[컨트롤이름].UniqueID %>', ''); 
이 방법을 사용하셔도 됩니다.