2010-01-19 3 views
0

OnClick이 코드 숨김 이벤트에 바인딩되어있는 웹 양식에 Button이 있다고 가정 해보십시오.컨트롤을 마스터 페이지 나누기 이벤트 바인딩으로 이동합니까?

그런 다음이 단추를 마스터 페이지의 컨트롤 컬렉션에 추가하여 마스터 페이지로 옮깁니다. 이것은 런타임시 Page_Load 이벤트에서 수행됩니다.

어디로 OnClick 이벤트가 지금 바인딩되어 있습니까? 여전히 웹 양식의 코드 숨김 또는 마스터 페이지의 코드 숨김을 조사하고 있습니까?

나는 단지 이것을했는데, 이제는 내 버튼이 아무 것도하지 않습니다. 페이지를 다시 게시하지만 실제로 코드 숨김에서 바인딩 된 이벤트를 실행하지는 않습니다.

두 경우 모두 버튼의 HTML을 확인했습니다. 변경된 유일한 것은 명명 컨테이너의 변화를 반영하기 위해 ID와 이름을했다 :

<input type="submit" id="ctl00_MainContent_DeleteButton" value="Yes, Delete" name="ctl00$MainContent$DeleteButton"/>  

마스터 페이지에서 : 웹 양식에서

를 ("MainContent"는의 ContentPlaceHolder이다)

<input type="submit" id="ctl00_DeleteButton" value="Yes, Delete" name="ctl00$DeleteButton"/> 

나는 디버거를 실행했으며 바운드 이벤트를 더 이상 만지지 않는다는 것을 확인할 수 있습니다.

이벤트에 바인드하는 ID 또는 이름입니까? 그렇다면 마스터 페이지로 이동하면이 바인딩이 해제됩니까?

+0

렌더링 된 HTML에 JavaScript가 누락되었다고 말하고 있습니까? 어딘가에 __doPostBack (eventTarget, eventArgument)에 대한 호출이 있어서는 안됩니까? – Josh

+0

거기에 렌더링 된 HTML이 있으므로, 거기에 없으면 렌더링되지 않습니다. 이것은 컨트롤이 이동했을 때 이벤트 처리기의 연결이 끊어 졌다고 생각하게합니다. – Deane

답변

0

코드 비헤이비어 이벤트에 컨트롤을 바인딩하는 것은 특성 (예 : <asp:Button ... OnClick="btnSubmit_click">)이며 위의 예에서이 특성이 누락 된 것 같습니다.

마스터 페이지의 버튼을 두 번 클릭하면 이벤트가 종료됩니다. 이벤트 핸들링에 심각한 문제가있는 경우 흥미로운 내용도 많이 있습니다.

+0

오해. 위에서 HTML은 페이지에 렌더링 된 * HTML입니다.그리고 마스터 페이지의 버튼을 클릭 할 수 없습니다. Page_Load 이벤트의 마스터 페이지로 이동했기 때문입니다. 그것은 바인딩이 괜찮은 웹 양식에서 시작됩니다. – Deane

+0

오. 마스터의 버튼을 생성하는 절차에서 코드 숨김과 비슷한 이벤트를 연결할 수 있습니까? IE : Button.onclick = originalButtonmethod_click() –

0

컨트롤이 마스터 페이지에 있으면 엔진은 마스터 페이지의 코드 숨김에서 이벤트 핸들러를 찾습니다. 이벤트 처리기는

중 하나 여야합니다. 정의 된 것과 동일한 범위에서 선언되거나

b. 프로그래밍 방식으로 할당됩니다.

+0

컨트롤은 웹 양식에서 시작됩니다 *. Page_Load 동안 마스터 페이지로 이동합니다. 그럼, 어떤 범위입니까? – Deane

+0

버튼이 언제 어떻게 이동되었는지 명확하지 않았습니다. 또한 이벤트 처리기가 할당 된 방법을 언급하지 않았습니다. –

+0

죄송합니다 - 위 게시물을 편집하여 런타임에 이동했음을 나타냅니다. 이벤트 처리기는 웹 양식의 컨트롤 요소에 OnClick 특성을 통해 할당됩니다. – Deane

0

이동으로 인해 컨트롤 실행주기가 끊어 질 수 있습니다.

포스트 백 데이터가 처리 된 후 포스트 백 변경 알림 및 처리기가 해고되기 전에 발생하는 Page_Load 동안 컨트롤을 이동한다고하셨습니다.

Control Execution Lifecycle Reference

또한 this은 다시 게시 처리에 관한 사항 UniqueID 것을 말한다,하지만 난 이벤트에 대한 확실하지 않다.

관련 문제