Puis-je savoir quels événements de contrôle seront déclenchés sur une publication ASP?

StackOverflow https://stackoverflow.com/questions/243120

  •  04-07-2019
  •  | 
  •  

Question

Est-il possible d'obtenir une liste des événements de contrôle qui vont se déclencher avant qu'ils ne se produisent, par exemple dans le gestionnaire Page_Load ?

Par exemple, si un bouton a été cliqué, puis-je le savoir avant que le gestionnaire d'événements button_click ne soit appelé?

Était-ce utile?

La solution

Vous avez choisi une question très difficile. La raison en est qu’il existe plusieurs manières de déclencher les événements.

1) __EVENTTARGET (comme mentionné ci-dessus) 2) Si le nom de votre bouton est MyButt, vous verrez alors " MyButt = " dans la chaîne de requête. 3) Lorsque chaque contrôle (comme une zone de texte, par exemple) vérifie la demande pour voir si sa valeur dans ViewState est différente de celle publiée, alors un message "Text_Changed". va tirer.

Mais vous pouvez utiliser les n ° 1 et n ° 2 pour vérifier quelques endroits.

Autres conseils

Malheureusement, interroger la valeur __EVENTTARGET ne fera pas l'affaire. Souvent, cette valeur sera vide. Le traitement de publication prend certaines décisions sur les événements à déclencher en fonction de plus que la valeur cible d'événement (le cas échéant). Le test des valeurs d'état de contrôle par rapport aux valeurs publiées par le formulaire (comme pour une zone de texte) détermine si des événements tels que TextChanged doivent être déclenchés. .

À part connecter un gestionnaire d'événements à tous les contrôles pour lesquels vous souhaitez capturer des événements, je ne pense pas qu'il soit possible de le déterminer. Il serait peut-être possible de faire fondamentalement ce que le cadre fait. Vous devrez le faire entre la création des contrôles et la restauration de Viewstate, mais avant le traitement des valeurs publiées. Vous pouvez comparer les valeurs de contrôle actuelles (de viewstate) avec les valeurs publiées, en déterminant essentiellement quels événements déclencheraient .

Quel est votre objectif avec cela? Peut-être y a-t-il une meilleure solution.

Ce qui suit contient l'identifiant mutilé d'un bouton lorsque vous cliquez dessus.

Page.Request.Form["__EVENTTARGET"]

Voici un exemple qui, je crois, répond à vos question.

Une autre solution serait simplement de définir des points d'arrêt lors du débogage.

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