Lors de la création d'un contrôle Web, devez-vous remplacer OnLoad ou implémenter Page_Load

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

  •  02-07-2019
  •  | 
  •  

Question

Lorsque vous créez un nouveau contrôle d'utilisateur Web dans Visual Studio, il ajoute par défaut l'événement Page_Load. Quel est l'avantage d'utiliser ceci plutôt que de remplacer l'événement de base OnLoad sur le contrôle? Est-ce simplement que l'événement Page_Load est déclenché avant OnLoad ?

Était-ce utile?

La solution

La méthode OnLoad doit être l'emplacement où l'événement Load est déclenché. Personnellement, j’essaie toujours de gérer l’événement, sauf si j’ai besoin de traitement supplémentaire pour le relancer.

Je recommande de gérer l'événement lui-même dans des circonstances normales.

Autres conseils

Vous pouvez trouver cet article sur le cycle de vie des pages de Microsoft. utile.

Comme vous pouvez le voir ci-dessus, il s’agit essentiellement d’un choix personnel SI ce choix est fait en connaissance de cause. La meilleure vue d’ensemble rapide mais solide que j’ai vue est la suivante: http://weblogs.asp.net/infinitiesloop/archive/2008/03/24/onload-vs-page-load-vs-load-event.aspx

C'est vraiment juste une question de choix. Cela me semble bizarre pour un objet d'attacher un événement à lui-même, surtout quand il y a une méthode que vous pouvez écraser.

Je pense que l'équipe ASP.NET a utilisé des événements parce que c'était le modèle de Global.asa dans ASP et pour réduire la barre pour les développeurs qui ne comprennent pas l'héritage ni les méthodes virtuelles surchargées.

La redéfinition de la méthode nécessite davantage de connaissances sur le cycle de vie des pages, mais il n'y a rien de "faux". avec elle.

Lisez la section intitulée "Événements de page de liaison" sur la page MSDN intitulée: "Modèle d'événement de contrôle de serveur Web ASP.NET" ( lien vers la page ) Il y a des déclarations utiles comme celles-ci:

  

L'un des inconvénients de l'attribut AutoEventWireup est qu'il nécessite que les gestionnaires d'événements de page aient des noms spécifiques et prévisibles. Cela limite votre flexibilité dans la manière dont vous nommez les gestionnaires d'événements. Un autre inconvénient est que les performances sont affectées , car ASP.NET recherche des méthodes au moment de l’exécution. Pour un site Web à fort trafic, l'impact sur les performances pourrait être considérable.

(le drapeau AutoEventWireup active des méthodes telles que Page_Load)

Même si vous héritez de UserControl , je pense que vous devriez éviter de remplacer les méthodes protégées si vous n'y êtes pas obligé. Le Page_Load est là pour vous faciliter l'ajout du code spécifique à votre UserControl .

Ne remplacez OnLoad que si vous avez besoin d'un contrôle absolu lorsque (/ if) l'événement Load est déclenché (ce qui devrait être rare, IMO).

Je pense que c'est la même chose. IMHO, avec Events, vous avez un peu plus de flexibilité, car vous pouvez rencontrer plus d'un auditeur pour votre événement!

Je pense qu'il existe une différence potentiellement importante entre les deux méthodes.

Ce dont je parle est la capacité de contrôler la séquence d'exécution.

Si vous écrasez, vous savez quand le chargement des classes de base aura lieu, car vous l'appelez. Cela donne plus de contrôle, mais c'est probablement une mauvaise chose, comme beaucoup le diront.

Si vous utilisez event, vous n’avez aucune garantie en termes d’ordre d’appel. Cela vous oblige à écrire un événement Load qui devrait être agnostique sur ce que font les super classes pendant la phase de chargement. Je pense que ce serait l’approche privilégiée et que c’est peut-être pour cette raison que le code généré automatiquement par VS est ainsi.

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