Pergunta

Eu estou tentando envolver minha cabeça em torno da infra-estrutura de controle para entender quais ASP.NET mantém o estado de exibição para o.

Não são estes regulares controles HTML ex: <input type="radio" checked="checked"/> -> Eu entendo estes não têm viewstate

Depois, há controles HTML com runat = "server" <input type="radio" checked="checked" runat="server"/> -> Será que o viewstate se mantido entre postbacks

Depois, há controles ASP.NET <asp:TextBox id="txtMyText" runat="server"/> -> Eu entendo estes têm viewstate

Nós temos alguns controles personalizados que herdam HtmlTextBox <myPrefix:myTextBox id="txtMyText" runat="server"/> -> É o mesmo como tipo 2 acima

É seguro assumir que qualquer controle com tag runat="server" terá viewstate mantida?

Foi útil?

Solução

Existem 3 tipos de controles, os elementos HTML padrão, como, controles de servidor HTML que têm a tag runat = servidor adicionado e controles web completas. Somente os controles da web têm viewstate mantida.

Outras dicas

Quando estávamos tendo problemas com viewstate eu comecei a usar o software helper Viewstate de Binary Fortress http : //www.binaryfortress.com/aspnet-viewstate-helper/

Ela dá-lhe uma visão real sobre o que está acontecendo -, bem como ajudar com problemas de desempenho relacionados viewstate pode decodificar o viewstate com um clique e ver o que está realmente lá - assim que você começa a entender o que os controles estão usando viewstate e que não são, e exatamente o que eles estão armazenando lá.

Além disso, algo que ninguém tenha mencionado é ControlState. Isto veio junto com ASP.NET 2 e teoria é que as coisas importantes que é necesssary para um controle para a função vai para o estado de controlo, e os dados etc no viewstate, para que possa desligar o viewstate e vincular os dados para o seu controle sobre cada nova postagem e o controle ainda funciona basicamente usando ControlState. Eu digo "teoria" porque, na prática a implementação parece irregular. Quando você olhar para o código dropdownlist usando reflector, por exemplo, isso não é devidamente aplicada. Isso pode ter mudado com versões posteriores do quadro, eu não tenho certeza. Muita informação sobre ControlState lá fora, se você procurar por ele, eu apenas pensei que eu iria falar dele.

afaik não, que os controles HTML não são projetados para manter tudo no viewstate, se você se preocupa com isso, tomar as webcontrols.

Qualquer coisa que você colocar em vista da sua página e adicionar o runat = "server" terá o viewstate mantida.

Como para controles adicionados dinamicamente, isso depende de quando e como você adicionar o controle para a árvore de controle. Confira a resposta aceita a esta questão , mas também verificar fora minha pergunta aqui .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top