Question

Je fais une application asp.net avec une page. Dans cette page, j'ai défini un utilisateur contrôle. Ce contrôle utilisateur a un menu (trois boutons) et 3 contrôles utilisateur définis également. En fonction du bouton cliqué, l’un des trois contrôles d’utilisation devient visible ou faux.

Dans ces trois contrôles utilisateur, j'ai un bouton et un message, et je souhaite afficher le message "Ce n'est PAS une publication". Lorsque vous cliquez sur le bouton du menu et lorsque vous cliquez sur le bouton de l'utilisateur, le message "OUI, c'est de la publication !!!".

La question est que l’utilisation de la propriété " IsPostBack " de la commande usercontrol ou de la page, le message ne sera jamais "Ce n'est PAS une publication" en raison du bouton cliqué dans le menu pour afficher le contrôle utilisateur imbriqué.

Voici la structure de la page:

page
  parent usercontrol
    menu
    nested usercontrol 1
      message
      button
    nested usercontrol 2
    nested usercontrol 3

Je sais que cela peut être fait à l'aide de ViewState, mais il existe un moyen de simuler la propriété IsPostBack ou de savoir quand est la vraie publication post-usercontrol?

Merci.

Était-ce utile?

La solution

J'ai la solution à ce problème. Lorsqu'un élément déclenche, un événement est envoyé au serveur dans la collection Request.Form. J'ai donc créé une propriété dans usercontrols imbriquée qui vérifie s'il existe un contrôle enfant (défini dans le contrôle usercontrol lui-même) dans la collection Request.Form:

public bool IsUserControlPostBack
    {
        get 
        { 
            foreach (Control c in Controls)
                foreach(string key in Page.Request.Form.AllKeys)
                    if( c.ClientID == key.Replace('

Ce code peut être une propriété de usercontrol ou, s'il est appelé souvent, une variable définie dans l'événement OnInit de usercontrol.

,'_')) return true; return false; } }

Ce code peut être une propriété de usercontrol ou, s'il est appelé souvent, une variable définie dans l'événement OnInit de usercontrol.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top