2009-12-16 3 views
0

J'ai créé un contrôle userc qui a un événement public nommé "DialogClosed".Le contrôle de l'utilisateur Web perd ses propriétés lors de la publication

Cet usercontrol dispose également d'un bouton. Lorsque l'utilisateur clique sur le bouton, le code d'arrière-plan déclenche l'événement "DialogClosed". Le problème est qu'après que l'utilisateur a cliqué sur le bouton, cela a causé à la publication, qui a créé une nouvelle instance de mon contrôle, et mon contrôle a perdu toutes ses propriétés parce que l'instance d'origine n'existe plus.

Alors, quand je tire l'événement, il déclenche une exception (parce que « DialogClosed » == null)

Répondre

1

Peut-être que je manque quelque chose ... mais tu ne pouvais pas vérifier seulement contre la propriété IsPostBack du page lorsque vous créez le contrôle, pour vous assurer que le contrôle n'est pas créé sur une publication?

De même, dans quel cas créez-vous le contrôle?

0

Est-ce que ViewState est activé pour le contrôle? Si tel est le cas, le contrôle UserControl doit être instancié sur l'événement Init de la page afin que les propriétés soient conservées lors d'une publication, à moins que vous ne l'ayez simplement déclaré dans le balisage aspx.

+0

dois-je activer viewstate sur le contrôle utilisateur lui-même ou dans les pages d'utilisation? – Eitan

+0

Vous avez déclaré .... "Le problème est que, après que l'utilisateur a cliqué sur le bouton, cela a provoqué une publication, qui a créé une nouvelle instance de mon contrôle, et mon contrôle a perdu toutes ses propriétés ..." dépend de ce que "MyControl" est. Si la propriété en question appartient à UserControl, cela signifie que ViewState doit être activé sur UserControl. S'il s'agit d'une propriété personnalisée sur UserControl, assurez-vous que cette propriété met à jour viewstate en conséquence. http://stackoverflow.com/questions/1673975/viewstate-as-attribute – George

0

vous devez relier le gestionnaire d'événements après la publication de la page. mais les propriétés ne doivent pas être perdues si viewstate est activé.

Questions connexes