Pergunta

Estou migrando do ASP clássico para o ASP.NET e encontrei o que muitos de vocês já conhecem como "viewstate".Posso estar me precipitando com minha suposição, mas parece altamente complicado.Desenvolvi muitos formulários ASP no passado e nunca tive problemas em manter o estado.Existe outra maneira OU terei que aprender essa coisa de Viewstate no ASP.NET?Estou usando o Visual Studio 2008, VB.NET como linguagem de código por trás e Framework v3.5 com SQL Server 2005.

Foi útil?

Solução

Você não precisa. Verificação de saída MVC Framework. Ele elimina o ViewState e funciona como ASP antigo (pelo menos deste ponto de vista).

Outras dicas

Esta série de postagens é a leitura para entender o ViewState

Eu o desabilito e faço a maior parte do meu trabalho em Page_init em vez de carga (os valores ainda são mantidos por causa do ControlState). Esta configuração funcionou bem para mim.

O ViewState é opcional, mas útil. O que o ViewState é, são todas as alterações que ocorrem em um controle no lado do servidor. Portanto, se você estiver atribuindo texto a um rótulo, e deseja que esse texto persista sem a necessidade de reatribuir -o em todos os postbacks, você deseja manter isso. Outro exemplo em que sempre deixo o ViewState é qualquer banco de dados.

Dito isto, há momentos em que é útil desligar o ViewState pelo mesmo motivo. Por exemplo, o único lugar onde eu sempre Desligar ViewState Off é um rótulo de mensagem. Dessa forma, quando tenho que imprimir uma mensagem para o usuário (que deve aparecer apenas uma vez e depois ir embora), apenas adiciono o texto ao rótulo e depois esqueço. Durante o próximo postback, o rótulo será revertido automaticamente para o texto encontrado na declaração ASPX para esse controle (neste caso, uma string vazia).

Agora, observe que isso não tem nada a ver com a coleção de formulários, que são os valores publicados no IIS durante o postback. A coleção de formulários envia os valores que o usuário insere em elementos de formulário (caixas de texto, caixas de seleção, gotas, etc.). Estes .NET irão preencher no lugar apropriado-e isso ocorre DEPOIS ViewState foi processado.

Dessa forma, se você enviar uma caixa de texto com a frase "Olá" para o cliente, o usuário altera -o para "ver ya" e depois enviar o formulário, o que a caixa de texto terá no momento em que o evento Page_load Fires for uma caixa de texto com com "Veja Ya" no atributo de texto.

No ASP clássico, sempre usamos um campo oculto para fazer o trabalho. O ViewState é apenas uma maneira de fazer isso para você automaticamente. Confie em mim, a curva de aprendizado não é tão alta quanto você imagina.

Alguns controles ficam profundamente prejudicados quando você desativa o ViewState, portanto, esteja preparado para resolver essas questões.É mais fácil ser preguiçoso e deixá-lo ativado, mas se não for verificado, o ViewState pode facilmente representar 30% do tamanho do seu HTML.

Por exemplo, digamos que você tenha um DropDown e o vincule a uma lista de frutas.Você vincula isso no if(!IsPostBack) { } no carregamento da página.Se você desativar o ViewState, perderá os itens ao clicar em um botão.Eles precisam ser vinculados a cada carregamento de página.Você também perderá o índice selecionado, então precisará retirá-lo das variáveis ​​Request.Form[].

O ViewState faz parte do pacote quando você está trabalhando com o ASP.NET. Para uma página/site básico, você não precisa 'saber' como usar o ViewState. Ele é usado ao colocar controles nas páginas.

É muito difícil evitar o ViewState com o ASP.NET, porque, mesmo que você o desative no nível do projeto, alguns controles individuais ainda usam o ViewState para persistir suas informações.

Se você não quiser lidar com o ViewState, considere usar a estrutura do ASP.NET MVC. Você provavelmente ficará mais confortável com a estrutura do MVC proveniente do Classic ASP.

O ViewState é completamente opcional em quase todos, se não todos os casos. Asp.net re-popula os campos automaticamente, mesmo que viewStateEnabled = false. Eu uso asp.net há 5 ou 6 anos e nunca tive que depender do ViewState. Eu até desabilito quando posso.

O ViewState funciona automaticamente na maior parte. É como o ASP.NET acompanha o estado atual de todos os seus controles.

Você também pode usar manualmente o ViewState, se deseja armazenar alguns dados extras. Isso é tão simples quanto:

Viewstate["Key"] = value;

A única advertência com isso é que qualquer objeto que você armazena no ViewState deve ser serializável.

Definitivamente, posso recomendar evitar o ViewState em datagrids e listas suspensas porque comecei recentemente a fazê -lo. Eu não fiz isso por diversão, tive que consertar uma página que cresceu tão grande que estava causando outros problemas. Mas isso acabou sendo fácil, e os resultados foram tão dramáticos que estou muito satisfeito. Obviamente, para um pequeno aplicativo simples ou para pequenas quantidades de dados, isso não será necessário, mas, por outro lado, é bom ser consistente (sempre vá de conhecido como conhecido para que você possa melhorar continuamente seu processo ...) e por que Carregue bagagem extra, sempre?

Isso exigirá uma pequena intervenção manual da sua parte. Por exemplo, se você desativar o ViewState para listas suspensas, precisará rebindá -las em cada postback e restaurar o valor selecionado do objeto Solicitação. Você precisará ler sobre isso, mas o Google tem muitas informações prontamente disponíveis.

O ViewState é mantido automaticamente para os controles do ASP.NET "enraizados" na página. Há pouco que você precisa fazer, os valores e outras informações são passadas em uma entrada oculta B64 codificada. Você pode olhar para isso, se quiser, mas não importa, tudo é tratado automaticamente para você.

Se você está escrevendo código para seu próprio consumo, você pode desligá -lo e não se preocupar.

Presumivelmente, você manterá o código dos formulários da Web escrito por outras pessoas, para saber quais são as opções de configuração e os pontos problemáticos. Os poucos que eu consigo pensar

  • Como desativá -lo no site, página e nível de controle
  • Por que a Machinekey é relevante em fazendas da web
  • Por que o seu registro de eventos está cheio de erros ViewStateAuthentication
  • O que ViewStateUserKey é

Em termos de curva de aprendizado real, provavelmente é uma leitura completa de alguns artigos do MSDN.

O ViewState é um mal necessário inerente à metáfora da Web. Pessoalmente, acho essa metodologia obsoleta, inchada e geralmente não é amiga da Web. Confira melhor a estrutura do MVC, conforme sugerido acima.

Sugiro que você evite a tentação de usar o ViewState como um "cache" para passar os dados de um lado para o outro (vi sites fazendo isso por causa da configuração em cluster e nenhum estado de sessão apoiado pelo SQL). Os dados são serializados e adicionados à página e devem fazer as itens redondas a cada solicitação, aumentando o tamanho total da página e tornando seu site mais lento para carregar.

'<%@ Control Language="C#" AutoEventWireup="true" CodeFile="HomePage.ascx.cs" Inherits="HomePage" %>
<script runat="server">
  void testHF_ValueChanged(object sender, EventArgs e)
    {
       this.HFvalue.Text = this.testHF.Value ;

    }
</script>
<asp:Label ID="UserNamelbl" runat="server" Text="User Name : " Visible="false"></asp:Label>
<asp:TextBox ID="UserNametxt" runat="server" Visible="false" ></asp:TextBox>
 <asp:Label ID="HFvalue" Text="......" runat="server"></asp:Label>
 <asp:HiddenField ID="testHF"
OnValueChanged="testHF_ValueChanged"
value="" 
runat="server" ></asp:HiddenField>
<input type="submit" name="SubmitButton" value="Submit" onclick="CL()" />

<script type="text/javascript">
    function CL() 
    {
        this.testHF.Value = this.UserNametxt.Text;  
    }
</script>
'
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top