J'ai un contrôle composite qui a quelques champs privés qui référencent des valeurs dans le cache et ces champs privés sont appelés au cours de la méthode constructeur. Comme une clé de chaîne est utilisée pour identifier la valeur dans le cache, je dois avoir un moyen de stocker cette clé de manière à ce qu'elle soit disponible au moment où le contrôle est instancié, et je dois pouvoir le référencer sur les postbacks sans changer.Comment enregistrer la valeur à travers les publications pour un contrôle composite sans utiliser viewstate
En outre, cette clé est générée la première fois que le contrôle est chargé, mais il ne doit pas être modifié à nouveau après cette première fois.
Comment puis-je accomplir ceci?
J'ai déjà essayé de l'enregistrer dans viewstate, mais cela ne fonctionne pas car viewstate n'est pas encore disponible au moment où le contrôle est instancié. J'ai essayé d'utiliser un champ privé et de vérifier par la suite contre Page.IsPostback dans le constructeur et si ce n'est pas la publication, j'attribue une valeur au champ privé, mais lors des postbacks suivants, il perd sa valeur, et je peux Ne le réattribuez pas dans le Page.IsPostBack car il s'agit d'un GUID autogénéré.
Cela doit être quelque chose les gens ont dû faire avant ....
J'utilise le cache pour pouvoir réinitialiser les données à leur état d'origine lorsque l'utilisateur clique sur un bouton "reset" dans le contrôle composite. C'est l'objectif principal de toute façon .. Je suis en train de tester en essayant de déplacer le code qui assigne la source de données dans l'événement init. –
Okay; Cela devrait fonctionner tant que vous n'avez rien d'autre qui se passe dans des moments étranges qui dépendent de ce qui se passe à un certain moment. En règle générale, la liaison de données est mieux fait dans l'événement Load (Page ou Control), mais j'ai suggéré au moins Init de réduire les chances de toucher un autre problème si quelque chose dépend d'autres choses que vous faites en même temps. –
Et je préfère ne pas encombrer cette Question avec une discussion sur ce que vous stockez dans Cache/Application; mais il peut aussi y avoir une meilleure façon de gérer cela, en fonction de ce que vous stockez. –