동적으로 추가 된 컨트롤 서브 클래스를 사용하여 Control.ViewState에 어떻게 액세스합니까?

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

  •  02-07-2019
  •  | 
  •  

문제

우리는 제어 클래스의 ViewState 속성을 통해 데이터를 지속 해야하는 컨트롤을 만들었습니다. 우리의 클래스 서브 클래스는 viewstate 속성에 액세스하기 위해 엄격하게 제어합니다 (페이지 객체에서 보호됩니다). oninit의 page.controls에 컨트롤을 추가 한 다음 viewstate 속성을 OnPreload에서 설정하려고 시도합니다.

페이지의 뷰 스테이트를 디코딩하고 검토 할 때, 우리의 값은 기록되지 않았으므로 나중에 검색 할 수 없습니다.

뷰 스테이트 프로세스에 참여할 수있는 방법을 아는 사람이 있습니까?

도움이 되었습니까?

해결책

문제는 페이지에 직접 컨트롤을 추가하는 것입니다. 불행히도 이것은 Controls 계층 구조가 너무 높아서 Viewstate 처리 양식에 참여합니다. 실제 ASPNET Form의 Controls Collection에 컨트롤을 추가하면 LoadViewTatereCursive 및 SaveViewTatereCursive에 성공적으로 참여합니다.

다른 팁

Oninit에서 컨트롤을 작성한 다음 Onload에서 Page.controls에 추가하십시오.

ViewState는 Oninit 이후가 아니라 Onload 전에로드되지 않습니다.

다음은 Page Life-Cycle의 대략적인 개요입니다 (그레그 박)는 이것을 나의 이전 질문에 대한 응답으로 게시했습니다.

  • 초기화
  • loadViewState
  • 포스트백 데이터로드
  • 통화 제어로드 이벤트
  • 호출로드 이벤트
  • 통화 제어 이벤트
  • 제어 프레 렌더
  • 프레 렌더
  • SaveViewState
  • 부리다

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