출처: http://www.bangsil.pe.kr/Board/Read.aspx?BoardId=da05ba1b-3e9b-4d16-b8f8-ff2e4f7514c5&PostId=01fea3a4-c6d2-4633-9a74-c52bf2fb3bcb
아..
짱난다..ㅡ.ㅡ;
버튼 컨트롤에 OnClientClick이라는 프라퍼티가 생겼는데..
이는 이전 버전의 Attribute의 대용이라 볼수 있겠다..
btnSearch 라는 버튼 컨트롤이 있다고 가정 할때
1.X 버전에서는
btnSearch.Attribute["onclick"] = "return CheckId()"; |
2.0버전에서는
btnSearch.OnClientClick = "return CheckId()"; |
2.0에서는 렌더링 후에 생기는 스크립트가 다른데...
WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$cphSubMain$btnNext", "", false, "", "Member_Kind.aspx", false, false)) |
암튼..
그냥 버튼과 이미지 버튼의 경우..
후자의 경우 OnClientClick 을 쓰게 되거나 이전 버전처럼 Attribute를 사용 하게 되면..
렌더링 후에 이렇게 바뀐다.
onclick="return CheckId(); WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$cphSubMain$btnNext", "", false, "", "Member_Kind.aspx", false, false));" |
뒤에 메소드는 여러가지 작업을 한다..PostBackUrl과도 연관되어 있고..유효성 검사에도 관련이 있다.
그 밖에 더 있는지는 아직 못 살펴 봤다..ㅡ.ㅠ;
암튼...
이런 의도 하지 않는 반응을 하게 되는데..이것을 어떻게 해결 해야 할까..ㅡ.ㅡ;
2가지 방법이 있다.
첫번째는 링크 버튼을 쓰는거다..
다른 버튼과는 달리 앵커 태그로 렌더링 된다.
<a onclick="return CheckId();" id="LinkButton1" href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("LinkButton1", "", false, "", "Default.aspx", false, true))">LinkButton</a> |
대략 이런식인데.
딱 보면 알겠지만..
내가 정의한 스크립트 메소드( CheckId() )는 정의 한 대로 onclick이라는 어트리뷰트에 렌더링 되었으나
프레임워크에서 생성한 저 복잡한 메소드는 href 어트리뷰트에 렌더링 되었다..
오홋..바로 이거다..
결론은 링크 버튼을 쓰면 된다..ㅡ.ㅡ;
혹자 묻는다..이미지는 그럼 어떻게 해~~~~
<asp:Linkbutton id="btnSearch" runat="server"><img src="temp.jpg"></asp:Linkbutton> |
자.이제 2번째 해결법은..
나는 죽었다 깨도...이미지 버튼이나 그냥 버튼을 써야 겠다 하는 사람은..또 방법이 있다..ㅡ.ㅡ;
렌더링 결과를 보면..
onclick="return 메소드(); 기타 등등"
이라고 나오는데..
결론부터 말하면..
내가 정의 한 메소드에서 false 일때만 리턴을 시키는거다..
이를 위해서는 메소드를 쓸수가 없다..OTL~~
이렇게 정의 해 본다..ㅡ.ㅡ;
string script = @" |
뭔가 보이는가???
렌더링 되면 이렇게 된다.
onclick=" if(eval(document.all.ctl00_cphSubMain_chkFlag).checked == false) { alert(\"약관에 동의하여 주십시오.\"); eval(document.all.ctl00_cphSubMain_chkFlag).focus(); return false; };WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$cphSubMain$btnNext", "", false, "", "Member_Kind.aspx", false, false))" |
나름대로 꽁수라고 볼수 있지롱..^^;;
댓글 영역