Como obter o valor de construído, ViewState codificado?

votos
22

Eu preciso pegar a representação codificada em base64 do ViewState. Obviamente, isso não estaria disponível até muito tarde no ciclo de vida do pedido, que é OK.

Por exemplo, se a saída da página inclui:

<input type=hidden name=__VIEWSTATE 
  id=__VIEWSTATE value=/wEPDwUJODU0Njc5MD...== />

Eu preciso de uma maneira no lado do servidor para obter o valor /wEPDwUJODU0Njc5MD...==

Para esclarecer, eu preciso este valor quando a página está sendo processado, não no PostBack. por exemplo, eu preciso saber o valor ViewState que está sendo enviado para o cliente, não o ViewState que estou recebendo de volta deles.

Publicado 04/08/2008 em 04:59
fonte usuário
Em outras línguas...                            


3 respostas

votos
9

Rex, eu suspeito que um bom lugar para começar a procurar é soluções que comprimem o ViewState - eles estão agarrando ViewState no servidor antes de ser enviado para o cliente e gzipping-lo. Isso é exatamente onde você quer estar.

Respondeu 04/08/2008 em 09:04
fonte usuário

votos
3

Veja este post onde o autor descreve um método para substituir o comportamento padrão para gerar o ViewState e em vez disso mostra como guardá-lo no objeto Session servidor.

No ASP.NET 2.0, ViewState é guardado por um descendente da classe PageStatePersister. Essa classe é uma classe abstrata para salvar e carregar ViewsState e há dois descendentes implementadas desta classe em .Net Framework, chamado HiddenFieldPageStatePersister e SessionPageStatePersister. Por padrão HiddenFieldPageStatePersister é usado para salvar / carregar informações ViewState, mas podemos facilmente obter o SessionPageStatePersister para trabalhar e poupar ViewState no objeto Session.

Embora eu não testar seu código, parece mostrar exatamente o que você quer: uma maneira de ter acesso ao código ViewState enquanto ainda no servidor, antes de postback.

Respondeu 04/08/2008 em 10:04
fonte usuário

votos
2

I habilitado compressão seguinte artigos semelhantes às postado acima. A chave para acessar o ViewState antes da aplicação envia-se substituir este método;

protected override void SavePageStateToPersistenceMedium(object viewState)

Você pode chamar o método base nesta override e depois adicionar qualquer lógica adicional que você precisa para lidar com o ViewState.

Respondeu 05/08/2008 em 11:07
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more