2008-09-29 7 views
2

중첩 된 modalPopups가 updatePanels로 래핑 된 경우 (이상한 것은 아니며 리팩토링해야 할 수도 있습니다.하지만 그 이유는 우리가 어떻게 재사용하고 싶은 사용자 컨트롤이 쓰여졌는지), 중첩 된 modalPopup을 열어야하는 포스트 백을 발생시킬 때 대신 부모 프로세스를 닫습니다. 인수를 위해서, 내가 중단 점을 설정하고있는 경우는 우리가 처음에 예상대로 작동, 바로 modalPopup의 표시() 메소드가 호출 아이 전에ASP.NET AJAX 중첩 된 updatePanel modalPopup funkiness

((ModalPopupExtender)this.Parent.Parent.FindControl("modalPopupExtender'sID").Show(); 

를 실행합니다. updatePanels가 중첩되어있을 때 부모가 다시 게시 할 수 있기 때문에 modalPopup 부모는 패널의 표시 여부를 처음부터 다시 표시하고 다시로드해야한다고 "알지 못합니다"라고 생각합니다. 자식 modalPopup은 가시성이 false 인 부모 패널 안에 중첩되어 있으므로 Show()를 호출해도 아무 효과가 없습니다. 그래서 다른 modalPopup을 열지 않고, 현재의 하나를 닫습니다. 이것은 오류가 아니며 우리가 예상하지 못한 동작이므로 아무런 예외없이 어디에서 던지지 않고 추적하기가 어려웠지만 위의 설명이 의미가 있다고 생각합니다 ... 문제를 잘못 이해했다면이를 분명히하십시오 이 모든 일이 일어날 것 같지 않기 때문에 나는 그것을 생각할 것입니다.
이 특정 상황에 대한이 시점에서 우리는 중첩 된 updatePanels로 끝나지 않도록 이러한 컨트롤 중 일부를 다시 작성해야합니다. 그래서 이것은 발생하지 않지만 궁금합니다.
전에이 문제를 겪은 사람이 있습니까? 문제의 modalPopup을 다시 표시()하기 위해 FindControl()에 대한 호출을 포함하지 않는 영리한 해결 방법을 생각해 냈습니까?

+0

UpdatePanels를 많이 사용할수록 더 싫어합니다. jQuery 나 다른 자바 스크립트 라이브러리를 배우고 UpdatePanels를 함께 사용하지 않는 것이 좋습니다. – ctrlShiftBryan

+0

그래, 글쎄, jQuery가 향상된 intellisense가있는 VS와 함께 배송 될 예정 이니, 생각보다 훨씬 일반적이 될 것입니다! UpdatePanels은 당신이 생각할 필요가 없기 때문에 이론상 멋지다. 마크 업에 던져 넣기 만하면된다. – Grank

+0

내가 가진 updatePanel/모달 계층을 잘 모르겠다. 업데이트 패널이 포함 된 모달이 있고 업데이트 패널에 모달이 있습니까? – sledgebox

답변

3

이 문제가 해결되었습니다.
UpdatePanel의 UpdateMode를 "Conditional"로 변경하면 하위 UpdatePanel이 다시 게시 할 때 상위 UpdatePanel이 포스트 백하지 않으며 중첩되지 않습니다.
UpdateMode = "항상"이 기본이지만, 학습 된 이유를 모르겠습니다.

+0

항상 UpdatePanels의 UpdateModes를 Conditional로 설정하는 방법을 배웠습니다. .. 솔직히 말해서 나는 시나리오를 생각할 수 없다는 것을 완전히 확신하지 못한다. 우리는 항상 그들을 항상 원할 것입니다. –

관련 문제