ASP.NET Web Forms - Conserver ViewState


En conservant le ViewState des objets dans votre formulaire Web, vous pouvez économiser beaucoup de travail de codage.


Conservation du ViewState

Dans ASP classique, lorsqu'un formulaire est soumis, toutes les valeurs du formulaire sont effacées. Supposons que vous ayez soumis un formulaire avec une grande quantité d'informations et que le serveur ait renvoyé une erreur. Vous devez revenir au formulaire pour corriger les informations. Vous cliquez sur le bouton Précédent, et que se passe-t-il... toutes les valeurs du formulaire sont effacées, et vous devez tout recommencer depuis le début ! Le site ne conservait pas votre ViewState.

Dans ASP.NET, lorsqu'un formulaire est soumis, le formulaire apparaît dans la fenêtre du navigateur avec les valeurs du formulaire. Comment cela se fait-il ? C'est parce qu'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 caché 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 du ViewState est le paramètre par défaut pour les Web Forms ASP.NET. Si vous ne voulez pas conserver le ViewState, incluez la directive <%@ Page EnableViewState="false" %> en haut de la page .aspx, ou ajoutez l'attribut EnableViewState="false" à n'importe quel contrôle.

Regardez le fichier .aspx suivant. Il illustre l'ancienne façon de faire les choses. Lorsque vous cliquez sur le bouton d'envoi, les valeurs du formulaire disparaîtront :

Exemple

<html>
<body>

<form action="demo_classicasp.aspx" method="post">
Votre nom : <input type="text" name="fname" size="20">
<input type="submit" value="Submit">
</form>
<%
dim fname
fname=Request.Form("fname")
If fname<>"" Then
Response.Write("Hello " & fname & "!")
End If
%>

</body>
</html>

Voir l'exemple »

Voici la nouvelle méthode ASP.NET. Lorsque vous cliquez sur le bouton d'envoi, les valeurs du formulaire ne disparaîtront pas :

Exemple

Cliquez sur "View Source" dans le cadre de droite de l'exemple, et vous verrez qu'ASP.NET a ajouté un champ masqué au formulaire pour conserver ViewState.

<script runat="server">
Sub submit(sender As Object, e As EventArgs)
lbl1.Text="Hello " & 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>

Voir l'exemple »
Autres extensions