Como posso re-instanciar controles dinâmicos de usuário do ASP.NET sem usar um banco de dados?

Atualmente estou trabalhando com uma parte do meu aplicativo que usa controles de usuário da Web dinâmico e estou tendo um pouco de dificuldade para descobrir a melhor maneira de re-instanciar os controles no postback usando o ViewState ou algum outro método que não faz Exigir que eu consulte um banco de dados em cada postback.

Basicamente, o que eu tenho na minha página é um controle de usuário que contém um painel para manter uma quantidade variável de controles de usuário filho e um botão que diz "Adicionar Controle", cuja função é bastante auto-explicativa.

O controle de usuário filho é bem simples; é apenas um botão de exclusão, um menu suspenso e um controle de seleção de tempo organizados em uma linha. Sempre que o usuário clica no botão Adicionar controle no controle pai, uma nova 'linha' é adicionada ao painel que contém os controles filho.

O que eu gostaria de fazer é poder adicionar e remover controles para esta coleção, modificar valores e executar quaisquer operações que eu precise fazer 'in-memory' sem precisar fazer chamadas para um banco de dados. Quando terminar de adicionar controles e preencher seus valores, gostaria de clicar em "salvar" para salvar / atualizar todos os dados dos controles em um banco de dados de uma só vez. Atualmente, a única solução que encontrei é simplesmente salvar os dados no banco de dados em cada postagem e usar as linhas armazenadas no banco de dados para instanciar novamente os controles no postback. Obviamente, isso força o usuário a salvar as alterações no banco de dados contra sua vontade e, no caso de querer cancelar o trabalho com os controles sem salvar seus dados, deve ser feito um trabalho extra para garantir que as linhas previamente confirmadas sejam excluídas.

Pelo que aprendi sobre como usar controles dinâmicos, sei que é melhor adicionar os controles à página durante o estágio Init do ciclo de vida e, em seguida, preencher seus valores no estágio de carga. Eu também aprendi que a única maneira de ter certeza de que você pode persistir a viewstate do controle é ter certeza de que você deu a cada controle dinâmico um ID único e certifique-se de atribuir o mesmo ID exato ao re-instanciar o controle. Eu também aprendi que o ViewState não é realmente carregado até depois do estágio Init no ciclo de vida. É aqui que está meu problema. Como faço para armazenar e recuperar os nomes desses controles, se eu não conseguir usar o viewstate e eu não quero realizar chamadas para um banco de dados? Esse tipo de manipulação de memória / lote de valores é possível mesmo usando o ASP.net?

Qualquer ajuda é muito apreciada,

Mike

questionAnswers(3)

yourAnswerToTheQuestion