View State ... Asp;Net
Mémoire : View State ... Asp;Net. Rechercher de 53 000+ Dissertation Gratuites et MémoiresBENDAOUD
Vous pouvez sinon activer le chiffrement de View State pour des pages spécifiques en ajoutant la propriété viewStateEncryptionMode="Always" dans la directive page de la page Web voulue comme le montre cet exemple : AutoEventWireup="true" Inherits="Test.Page1"
DÉSACTIVER LE VIEW STATE Le View State est activé par défaut pour chaque contrôle. Cela dit, si vous ne l’utilisez pas, il prend une charge de calcul inutile. Vous pouvez palier à ce problème en mettant la propriété EnableViewState à false pour chaque contrôle.
Exemple :
LIRE ET ÉCRIRE DES DO NNÉES PERSONNALISÉS DANS LE VIEW STATE Il est possible d’ajouter ou de récupérer des valeurs personnalisées dans des View States. Par exemple, vous souhaitez conserver une valeur particulière pendant toute la durée de la visite de l’utilisateur, alors l’ajout d’une donnée personnalisée dans le View State sera le moyen le plus efficace et le plus sûr pour y parvenir. En contrepartie cette valeur ne sera accessible que tant que l’utilisateur ne visitera pas d’autre page. Ceci est une bonne alternative pour le stockage de données temporaires. Exemple :
C#
protected void Page_Load(object sender, EventArgs e) { // On crée nos contrôles dynamiquement //on peut aussi utiliser ceux déjà crée dans notre page Web Label Label1 = new Label(); Button Button1 = new Button(); Button1.Text = "Click me !"; // On les ajoute à notre page Web form1.Controls.Add(Label1); form1.Controls.Add(Button1); // Si notre ViewState n'est pas null if (ViewState["LastAction"] != null) { // On affiche ce qui est contenu dans notre ViewState Label1.Text = (String)ViewState["LastAction"];
2
Proposé par :A BENDAOUD
// On peut remarquer que le mot clé String permet de //confirmer que nous envoyons une chaîne de caractère //à notre Label. // Un autre type d'objet aurait pu être passé en paramêtre //il aurait cependant fallu ajouter la méthode .ToString() //comme ceci : // ViewState.Add("LastAction", DateTime.Now); // Label1.Text = ((DateTime)ViewState["LastAction"]).ToString(); } else { Label1.Text = "Pas d'action précédente"; } // On crée notre ViewState ViewState.Add("LastAction", DateTime.Now.ToString()); // Bien que ce ne soit pas obligatoire comme dit plus haut //on ajoute directement à notre ViewState la méthode ToString() ------------------------------------------------------------------------------VB.NET
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load ' On crée nos contrôles dynamiquement ' on peut aussi utiliser ceux déjà crée dans notre page Web Dim Label1 As Label = New Label() Dim Button1 As Button = New Button() Button1.Text = "Click me !" ' On les ajoute à notre page Web form1.Controls.Add(Label1) form1.Controls.Add(Button1) ' Si notre ViewState n'est pas null If ViewState("LastAction") Nothing Then ' On affiche ce qui est contenu dans notre ViewState Label1.Text = CType(ViewState("LastAction"), String) ' On peut remarquer que le mot clé String permet de ' confirmer que nous envoyons une chaîne de caractère ' à notre Label. ' Un autre type d'objet aurait pu être passé en paramêtre ' il aurait cependant fallu ajouter la méthode .ToString() ' comme ceci : ' ViewState.Add("LastAction", DateTime.Now) ' Label1.Text = CType(ViewState("LastAction").ToString(), DateTime) Else Label1.Text = "Pas d'action précédente"
3
Proposé par :A BENDAOUD
' On crée notre ViewState ViewState.Add("LastAction", DateTime.Now.ToString()) ' Bien que ce ne soit pas obligatoire comme dit plus haut ' on ajoute directement à notre ViewState la méthode ToString() } End If End Sub Une fois avoir cliqué sur le bouton voici ce à quoi votre page doit ressembler :
L E C O N T R O L S T AT E
Lorsque vous créez un Custom Control utilisant les View States, le développeur qui utilisera votre contrôle pourra désactiver ces View States, ce qui aura pour effet d’empêcher votre contrôle de fonctionner correctement. Pour résoudre ce problème, vous pouvez utiliser la propriété Control State afin de stocker les informations relatives à votre contrôle. Le Control State est une propriété qui vous permet de conserver les informations qui sont spécifiques à votre contrôle et qui ne peut pas être désactivée à l’inverse du View State.
Pour utiliser le Control State dans un Custom Control vous devez surcharger la méthode OnInit() et appeler la méthode RegisterRequiresControlState pendant l’initialisation, puis surcharger les méthodes SaveControlState et LoadControlState. Exemple :
C#
public class Class1 : Label { protected override void Render(HtmlTextWriter writer) { base.Render(writer); writer.Write("Test de ma classe héritant de Label"); } protected override void OnInit(EventArgs e) { base.OnInit(e); Page.RegisterRequiresControlState(this); } protected override object SaveControlState() { return base.SaveControlState(); } protected override void LoadControlState(object savedState) { base.LoadControlState(savedState); } } ------------------------------------------------------------------------------VB.NET
4
Proposé par :A BENDAOUD
Public Class Class1 Inherits Label Protected Overrides Sub Render(ByVal writer As HtmlTextWriter) MyBase.Render(writer) writer.Write("Test de ma classe héritant de Label") End Sub Protected Overrides Sub OnInit(ByVal e As EventArgs) MyBase.OnInit(e) Page.RegisterRequiresControlState(Me) End Sub Protected Overrides Function SaveControlState() As Object Return MyBase.SaveControlState() End Function Protected Overrides Sub LoadControlState(ByVal savedState As Object) MyBase.LoadControlState(savedState) End Sub End Class End Class Il faut garder à l’esprit qu’un Custom Control doit rester le plus générique possible. Ne pas donner la possibilité au développeur de choisir s’il souhaite conserver les View States ou non peu faire perdre tout l’intérêt de votre contrôle. Cependant nous saurons qu’il est possible de le faire si besoin. Et voici ce que l’on obtient :
L ES H I D D EN F I E L D S
Les
...