Pergunta

Tenha uma página que adiciona controles dinamicamente. estado de controlo está a ser recuperada a partir da base de dados e controlos são re-adicionado à página na nova colocação. O usuário pode adicionar / controles de exclusão através da interface do usuário. Quando dois usuários estão na mesma página e se acrescenta / controles remove a outro usuário receberá erro ViewState próxima vez que ele tentar modificar o estado de controle.

" Falha ao viewstate carga. A árvore de controle no qual viewstate está sendo carregado deve coincidir com a árvore de controle que foi usado para salvar viewstate durante a solicitação anterior. Por exemplo, ao adicionar controles dinamicamente, os controles adicionados durante um post-back deve corresponder ao tipo e posição dos controles adicionados durante a solicitação inicial ".

Isso ocorre porque quando a página é desenhada eu uso um conjunto de controles e fico com um conjunto diferente de controles no postback porque o estado de controle foi modificado pelo usuário diferente.

Eu entendo o erro e por que seu acontecimento, mas eu acho que eu estou faltando alguma coisa aqui. Existe uma maneira de ter uma página que dinamicamente adiciona controles e pode lidar com usuários simultâneos que modifiy o estado de controles?

Foi útil?

Solução

Você precisa separar o do usuário atual estado do mestre , ou global, estado. Na postagem, em vez de construir a sua árvore de controle com base na definição mestre no banco de dados, carregar uma árvore de controle em cache que é específico para o usuário atual. Depois de ter passado a reconstrução ViewState, em seguida, iniciar o seu processo de reconciliação - se isso é automática ou necessidades para carregar outro UI para permitir ao usuário a participar está fora do âmbito da pergunta .

O ponto é que você precisa para manter "ramos" do mestre em uma base por usuário e comprometer e ler de uma forma mais controlada.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top