중첩 된 USERCONTROLS에서 포스트백을 시뮬레이션하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/801812

  •  03-07-2019
  •  | 
  •  

문제

한 페이지로 ASP.NET 응용 프로그램을하고 있습니다. 이 페이지에는 하나의 USERCONTROL이 정의되어 있습니다. 이 UserControl에는 메뉴 (3 개의 버튼)와 3 개의 USERCONTROL이 정의되어 있습니다. 클릭 된 버튼에 따라 세 개의 USERCONTROL 중 하나가 표시된 True 또는 False로 전환합니다.

이 세 가지 usercontrols에는 버튼과 메시지가 있으며 메뉴 버튼을 클릭하면 "포스트백이 아닙니다"메시지를 표시하고 UserControl의 버튼이 클릭되면 메시지는 "예, It Is입니다. 포스트 백 !!! ".

문제는 USERCONTROL 또는 페이지의 속성 "ISPOSTBACK"을 사용하는 것입니다. 메시지는 메뉴의 클릭 버튼으로 인해 중첩 된 USERCONTROL을 표시하기 때문에 "POSTBACK이 아닙니다"가 아닙니다.

이것은 페이지의 구조입니다.

page
  parent usercontrol
    menu
    nested usercontrol 1
      message
      button
    nested usercontrol 2
    nested usercontrol 3

ViewState를 사용하여 수행 할 수는 있지만 ISPOSTBACK 속성을 시뮬레이션하거나 실제 USERCONTROL POSTBACK이 언제인지 알 수있는 방법이 있습니까?

감사.

도움이 되었습니까?

해결책

이 문제에 대한 해결책이 있습니다. 요소가 발사되면 이벤트가 request.form 컬렉션에서 서버로 전송됩니다.

public bool IsUserControlPostBack
    {
        get 
        { 
            foreach (Control c in Controls)
                foreach(string key in Page.Request.Form.AllKeys)
                    if( c.ClientID == key.Replace('$','_'))
                        return true;

            return false;
        }
    }

이 코드는 USERCONTROL의 속성이거나, 많은 시간이라고 불리는 경우 USERCONTROL의 ONINIT 이벤트에 설정된 변수 일 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top