Pergunta

Se eu tenho um simples pedaço de dados para armazenar (um inteiro ou string por exemplo) eu poderia optar por armazenar que no ViewState, ou usando um controle HiddenField.

Por que eu iria escolher um sobre o outro?

ViewState

  • difícil para o usuário para decodificar (pensamento não impossível), o que pode ser desejável

HiddenField

  • O valor pode ser usado em JavaScript

Existem outros prós e contras?

Foi útil?

Solução

Não realmente, ViewState é armazenado em um campo oculto para a única diferença real é a codificação.

A menos que você precisa para manipular o valor com JavaScript ou você espera para desligar ViewState desta página por completo, então eu usar ViewState. Na maior parte apenas porque existem ferramentas de terceiros ( como este ) que entender ViewState e que ganhou 't compreender o seu costume campo oculto.

Outras dicas

Do ponto de vista de manutenção, eu uso ViewState. É menos código para você escrever, o que se resume a menos pontos de falha em seu software. Isso também significa que qualquer desenvolvedor vindo atrás de você terá um tempo mais fácil manter a sua solução.

Se você não está totalmente confortável com isso, escrever um acessador propriedade na página que funciona como uma fachada para recuperar o valor do ViewState. Mais tarde, se você se sentir compelido a convertê-lo em um campo oculto, o assessor pode lidar com esse interruptor seemlessly para o resto do código. Apenas certifique-se documentar suas razões para fazê-lo.

O ViewState é armazenado na própria página para que ele aumenta o tamanho da página e pode causar problemas de desempenho .

Além disso, podemos configurar o aplicativo para salvar o viewstate no servidor em vez de na página em si, que pode proteger de alguns problemas de segurança.

Jomit

O campo oculto são invisíveis na página e seus valores podem ser vistos na fonte vista, mas o valor de estado de exibição são codificadas e não são legíveis.

O valor do campo oculto são postados na página seguinte. (Nota: o uso server.transfer para obter o valor de campos ocultos).

Viewstate só é bom na página em que está ou postagem de volta para. Com um campo escondido você pode acessar os dados na próxima página você navegar para (bem como outros dados) usando o método PreviousPage do objeto Página assim:

string term = ((TextBox)Page.PreviousPage.FindControl("txtSearchTerm")).Text;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top