Domanda

Avere una pagina che aggiunge i controlli in modo dinamico. Lo stato del controllo viene recuperato dal database e i controlli vengono nuovamente aggiunti alla pagina sul postback. L'utente può aggiungere / eliminare i controlli tramite l'interfaccia utente. Quando due utenti si trovano sulla stessa pagina e uno aggiunge / rimuove i controlli, l'altro utente riceverà l'errore ViewState la prossima volta che proverà a modificare lo stato del controllo.

" Impossibile caricare viewstate. L'albero di controllo in cui viene caricato viewstate deve corrispondere all'albero di controllo utilizzato per salvare viewstate durante la richiesta precedente. Ad esempio, quando si aggiungono i controlli in modo dinamico, i controlli aggiunti durante un post-back devono corrispondere al tipo e alla posizione dei controlli aggiunti durante la richiesta iniziale. & Quot;

Questo perché quando viene disegnata la pagina uso un set di controlli e ottengo un set diverso di controlli sul postback perché lo stato del controllo è stato modificato da un altro utente.

Capisco l'errore e perché sta accadendo, ma penso che mi manchi qualcosa qui. C'è un modo per avere una pagina che aggiunge dinamicamente controlli e può gestire utenti simultanei che modificano lo stato dei controlli?

È stato utile?

Soluzione

Devi separare lo stato dell'utente corrente dallo stato principale o globale. Al postback, invece di creare l'albero di controllo in base alla definizione principale nel database, caricare un albero di controllo memorizzato nella cache specifico dell'utente corrente. Una volta superata la ricostruzione di ViewState, avvia il processo di riconciliazione, che sia automatico o debba caricare un'altra interfaccia utente per consentire all'utente di partecipare non rientra nell'ambito della domanda.

Il punto è che devi mantenere " rami " del master in base all'utente e si impegna e legge in modo più controllato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top