Formulaires Web ASP.NET - Maintien de ViewState
ViewState est basé sur webform. Définissez runat = "server" dans l'attribut de contrôle du formulaire Web. Ce contrôle sera attaché avec un attribut caché _ViewState stocke les valeurs d'état de tous les contrôles dans ViewState. Cette section vous présente comment ASP.NET gère ViewState.
En conservant le ViewState des objets dans votre formulaire Web, vous pouvez vous épargner beaucoup de travail de codage.
Dans ASP classique, lorsqu'un formulaire est soumis, toutes les valeurs du formulaire sont effacées. Disons que vous soumettez un formulaire contenant beaucoup d'informations et que le serveur renvoie une erreur. Vous devrez revenir au formulaire pour corriger les informations. Vous appuyez sur le bouton retour et que se passe-t-il... toutes les valeurs du formulaire sont effacées et vous devez tout recommencer ! Le site ne maintient pas votre ViewState.
Dans ASP .NET, lorsqu'un formulaire est soumis, celui-ci apparaît dans la fenêtre du navigateur avec ses valeurs. Comment? En effet, ASP .NET conserve votre ViewState. ViewState indique l'état de la page lorsqu'elle est soumise au serveur. Cet état est défini en plaçant un champ masqué sur chaque page avec un contrôle <form runat="server">. Le code source est le suivant :
<form name="_ctl0" method="post" action="page.aspx" id="_ctl0"><input type="hidden" name="__VIEWSTATE"value="dDwtNTI0ODU5MDE1Ozs+ZBCF2ryjMpeVgUrY2eTj79HNl4Q=" />... ..du code</form>
La conservation de ViewState est le paramètre par défaut pour les formulaires Web ASP.NET. Si vous ne souhaitez pas conserver ViewState, incluez la directive <%@ Page EnableViewState="false" %> en haut de la page .aspx ou ajoutez l'attribut EnableViewState="false" à n'importe quel contrôle.
Veuillez consulter le fichier .aspx ci-dessous. Cela démontre l’« ancienne » façon de fonctionner. Lorsque vous cliquez sur le bouton Soumettre, les valeurs du formulaire disparaîtront :
<html><body><form action="demo_classicasp.aspx" method="post">Votre nom : <input type="text" name="fname" size="20"><input type="submit" value ="Soumettre"></form><%dim fnamefname=Request.Form("fname")If fname<>"" ThenResponse.Write("Bonjour " & fname & "!")Fin Si%></body></html>
Voici la nouvelle méthode ASP .NET. Lorsque vous cliquez sur le bouton Soumettre, les valeurs du formulaire ne disparaissent pas :
Cliquez sur Afficher la source dans le cadre droit de l'instance et vous verrez qu'ASP.NET a ajouté un champ masqué au formulaire pour conserver ViewState.
<script runat="server">Sub submit (expéditeur en tant qu'objet, et en tant qu'EventArgs)lbl1.Text="Bonjour " & txt1.Text & "!"End Sub</script><html><body><form runat= "server">Votre nom : <asp:TextBox id="txt1" runat="server" /><asp:Button OnClick="submit" Text="Submit" runat="server" /><p><asp:Label id="lbl1" runat="server" /></p></form></body></html>