Question

J'essaie de comprendre l'infrastructure de contrôle pour savoir à qui ASP.NET conserve l'état d'affichage.

Il existe ces contrôles HTML classiques, par exemple: <input type="radio" checked="checked"/> - > Je comprends que ceux-ci n’ont pas de viewstate

Ensuite, il existe des contrôles HTML avec runat = " serveur " <input type="radio" checked="checked" runat="server"/> - > La vue est-elle maintenue entre les publications?

Ensuite, il y a les contrôles ASP.NET <asp:TextBox id="txtMyText" runat="server"/> - > Je comprends que ceux-ci ont viewstate

Nous avons quelques contrôles personnalisés qui héritent de HtmlTextBox. <myPrefix:myTextBox id="txtMyText" runat="server"/> - > Est-ce la même chose que le type 2 ci-dessus?

Est-il prudent de supposer que tout contrôle avec la balise runat="server" aura l'état de vue maintenu?

Était-ce utile?

La solution

Il existe 3 types de contrôles, les éléments HTML standard tels que, les contrôles serveur HTML auxquels est ajoutée la balise runat = server et les contrôles Web complets. Seuls les contrôles Web ont Viewstate maintenu.

Autres conseils

Lorsque nous avions des problèmes avec Viewstate, j’ai commencé à utiliser le logiciel d’aide Viewstate de Binary Fortress http. : //www.binaryfortress.com/aspnet-viewstate-helper/

Il vous donne une idée précise de ce qui se passe. Outre les problèmes de performances liés à Viewstate, vous pouvez décoder celui-ci en un clic et voir ce qu’il contient réellement. Vous pouvez ainsi comprendre quels contrôles utilisent Viewstate. qui ne sont pas, et exactement ce qu'ils stockent là-bas.

De plus, quelque chose que personne d'autre n'a mentionné est ControlState. Ceci est arrivé avec ASP.NET 2 et la théorie est que l’essentiel pour qu'un contrôle fonctionne fonctionne à l’état du contrôle, et les données, etc., dans le viewstate, vous pouvez donc les désactiver. le viewstate et lier les données à votre contrôle à chaque publication et le contrôle fonctionne toujours essentiellement en utilisant controlstate. Je dis & Quot; théorie & Quot; car dans la pratique, la mise en œuvre semble inégale. Lorsque vous examinez le code de la liste déroulante à l'aide de réflecteur, par exemple, cela n'est pas correctement implémenté. Cela a peut-être changé avec les versions ultérieures du framework, je ne suis pas sûr. Beaucoup d'informations sur controlstate là-bas si vous le cherchez, je pensais juste que je le mentionnerais.

Bien que non, les contrôles HTML ne sont pas conçus pour conserver quoi que ce soit dans l'état d'affichage, si vous en tenez à vous, prenez les contrôles Web.

Tout ce que vous mettez dans l'affichage de votre page et ajoutez le runat = & "serveur &"; le viewstate sera maintenu.

En ce qui concerne les contrôles ajoutés dynamiquement, cela dépend du moment et de la manière dont vous ajoutez le contrôle à l’arborescence des contrôles. Découvrez la réponse acceptée à cette question , mais vérifiez également ma question ici .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top