다음을 통해 공유


전용 뷰 상태 지원

업데이트: 2007년 11월

응용 프로그램 뷰 상태뿐 아니라 ASP.NET 모바일 컨트롤의 전용 뷰 상태 정보도 유지 관리할 수 있습니다. 모바일 컨트롤에서 내부 정보를 유지 관리하는 경우 해당 정보를 유지하는 데 응용 프로그램 설정을 사용하지 않는 것이 좋습니다. 대신 전용 뷰 상태를 사용하도록 응용 프로그램을 작성합니다. 전용 뷰 상태에는 페이지의 현재 활성 폼, 폼에 대한 페이지 매김 정보, 컨트롤 어댑터에서 선택한 장치별 정보 등이 포함됩니다.

전용 뷰 상태는 여러 가지 면에서 응용 프로그램 뷰 상태와 다릅니다. 전용 뷰 상태는 세션 상태에 저장되는 대신 렌더링된 페이지로 작성되며, 응용 프로그램에서 사용하지 않도록 설정할 수 없습니다. 또한 모든 전용 상태는 동적으로 생성되므로 응용 프로그램 뷰 상태에 사용되는 추적 의미가 전용 뷰 상태에는 적용되지 않습니다.

전용 뷰 상태를 사용하려면 컨트롤에서 LoadPrivateViewStateSavePrivateViewState 메서드를 재정의해야 합니다. 이러한 메서드는 LoadViewStateSaveViewState 메서드와 동일한 방식으로 동작합니다. 전용 뷰 상태의 일부인 설정을 저장하기 위해 컨트롤에서 ViewState 상태 속성과 같은 응용 프로그램 뷰 상태 메커니즘을 사용하도록 작성하면 안 됩니다.

컨트롤 어댑터는 전용 뷰 상태에도 참여할 수 있으며 LoadAdapterStateSaveAdapterState 메서드를 구현할 수 있습니다. 이러한 메서드는 각각 LoadPrivateViewStateSavePrivateViewState 메서드의 MobileControl 기본 클래스 구현을 통해 호출됩니다.

전용 뷰 상태는 클라이언트에 대해 작성되고 응용 프로그램의 제어를 받지 않으므로 모바일 컨트롤은 되도록 효율적으로 전용 뷰 상태를 사용해야 합니다. 다음 예제에서는 컨트롤 구현을 최적화하기 위한 한 가지 기법을 보여 줍니다.

protected override Object SavePrivateViewState()
{
    Object baseState = base.SavePrivateViewState;
    Object myState = GetMyState();

    if (baseState == null && myState == null)
        return null;
    else if (myState == null)
        return baseState;
    else
        return new Object[] { baseState, myState };
}

protected override void LoadPrivateViewState(Object state)
{
    if (state is Object[])
    {
        Object[] arr = (Object [])state;
        base.LoadPrivateViewState(arr[0]);
        LoadMyState(arr[1]);
    }
    else if (state != null)
        base.LoadPrivateViewState(state);
}

컨트롤에 저장할 전용 뷰 상태가 없으면 SavePrivateViewState 메서드에서 null을 반환합니다. 기본값으로 설정된 속성을 저장하기 위해 전용 뷰 상태를 사용할 필요는 없습니다.

참고 항목

기타 리소스

뷰 상태 지원