Como obter o valor de construído, codificado ViewState?
Pergunta
Eu preciso pegar o codificado em base64 representação do ViewState.Obviamente, este não estaria disponível até bastante tarde na solicitação de ciclo de vida, o que é OK.
Por exemplo, se a saída da página inclui:
<input type="hidden" name="__VIEWSTATE"
id="__VIEWSTATE" value="/wEPDwUJODU0Njc5MD...==" />
Eu preciso de um caminho no lado do servidor para obter o valor "/wEPDwUJODU0Njc5MD...=="
Para esclarecer, eu preciso desse valor quando a página está sendo processado, não em PostBack.exemplo:Eu preciso saber o valor ViewState que está sendo enviado para o cliente, não o ViewState estou recebendo de volta deles.
Solução
Rex, eu suspeito que um bom lugar para começar a procurar soluções que comprimir o ViewState - eles absorvem o ViewState no servidor antes de ser enviada para o cliente e gzipping-lo.Que é exatamente onde você quer estar.
Outras dicas
Veja isso post de blog onde o autor descreve um método para substituir o comportamento predefinido para gerar o ViewState e, em vez disso, mostra como guardá-lo na Sessão de servidor de objeto.
No ASP.NET 2.0, ViewState é salvo por um descendente de PageStatePersister de classe.Esta classe é uma classe abstrata para salvar e carregar ViewsState e há dois implementado descendentes desta classe .Net Framework, chamado HiddenFieldPageStatePersister e SessionPageStatePersister.Por padrão HiddenFieldPageStatePersister é usado para guardar/carregar informações de ViewState, mas podemos facilmente obter o SessionPageStatePersister para o trabalho e salvar ViewState no objeto de Sessão.
Embora eu não testar o seu código, que parece mostrar exatamente o que você deseja:uma maneira de obter acesso à ViewState código no servidor, antes de postback.
Eu habilitada a compactação seguintes artigos similares para aqueles postado acima.A chave para acessar o ViewState antes de o aplicativo envia foi substituindo este método;
protected override void SavePageStateToPersistenceMedium(object viewState)
Você pode chamar o método básico dentro desta substituir e, em seguida, adicione qualquer lógica adicional que você necessita para lidar com o ViewState.