2009-10-26 2 views
0

컨트롤을 동적으로 추가하는 페이지가 있습니다. 컨트롤 상태가 데이터베이스에서 검색되고 컨트롤이 포스트 백 페이지에 다시 추가됩니다. 사용자는 UI를 통해 컨트롤을 추가/삭제할 수 있습니다. 두 명의 사용자가 같은 페이지에 있고 하나가 컨트롤을 추가/제거하면 다른 사용자가 다음에 컨트롤 상태를 수정하려고 할 때 ViewState 오류가 발생합니다.ViewState 오류 : 동시 사용자가 동적 컨트롤을 수정했습니다.

"viewstate를로드하지 못했습니다. 컨트롤을 추가 할 때 viewstate가로드되는 컨트롤 트리가 이전 요청 동안 viewstate를 저장하는 데 사용 된 컨트롤 트리와 일치해야합니다. 예를 들어 컨트롤을 동적으로 추가 할 때 게시물 -back은 초기 요청 중에 추가 된 컨트롤의 유형 및 위치와 일치해야합니다. "

페이지를 그릴 때 하나의 컨트롤 집합을 사용하고 다른 사용자가 컨트롤 상태를 수정했기 때문에 포스트 백 컨트롤에 다른 컨트롤 집합이 있기 때문입니다.

나는 오류가 무엇인지, 왜 그런 일이 일어 났는지 나는 이해하지만 여기서 뭔가를 놓치고 있다고 생각한다. 동적으로 컨트롤을 추가하고 컨트롤의 상태를 수정하는 동시 사용자를 처리 할 수있는 페이지가있는 방법이 있습니까?

답변

1

현재 사용자의 상태는 마스터 또는 글로벌, 상태로 구분해야합니다. 다시 게시 할 때 데이터베이스의 마스터 정의를 기반으로 컨트롤 트리를 작성하는 대신 현재 사용자에게 고유 한 캐시 된 컨트롤 트리를로드하십시오. ViewState를 재구성 한 후에 조정 프로세스를 시작합니다. 자동 또는 사용자가 참여할 수 있도록 다른 UI를로드해야하는지 여부는 질문의 범위를 벗어납니다.

요점은 마스터의 "브랜치"를 사용자별로 유지하고보다 제어 된 방식으로 커밋하고 읽어야한다는 것입니다.

관련 문제