10 votes

Comment ajouter des événements de page pour ASP.NET dans Visual Studio 2008 ?

C'est un peu une question sur Visual Studio. Je pense qu'avec toute l'aide Intellisense utile, il devrait y avoir quelque chose pour aider mais je n'arrive pas à le trouver.

J'ai créé une page avec un codebehind en ASP.NET C# dans VS2008 et il génère automatiquement une méthode PageLoad, bien sûr. Eh bien, que se passe-t-il si je veux ajouter des méthodes pour d'autres événements en plus de PageLoad ? Je penserais qu'il y aurait une liste sur la page Foo.aspx des gestionnaires d'événements de méthodes possibles à ajouter. N'y en a-t-il pas d'autres peut-être comme PageInit, PageDispose, (ou équivalent) etc...? Où puis-je les trouver ?

EDIT - Je peux bien sûr chercher les noms des méthodes dans l'api. Je cherche un raccourci pratique pour les ajouter dans Visual Studio. Si cela en génère un, ne peut-il pas en créer d'autres ?

30voto

M4N Points 48758
  • Dans l'explorateur de solutions, faites un clic droit sur la page et sélectionnez "Afficher le concepteur de composants" dans le menu contextuel
  • ouvrez le panneau/fenêtre des propriétés (appuyez sur F4)
  • maintenant cliquez sur la flèche jaune/flash et vous verrez une liste de tous les événements de la page
  • double-cliquez sur l'événement pour lequel vous souhaitez ajouter un gestionnaire

Je suis assez sûr qu'il y avait une autre façon (en partant de la vue du concepteur), mais je ne peux pas la reproduire.

Je n'utilise généralement pas les gestionnaires d'événements de page, je préfère remplacer les méthodes correspondantes (par exemple, OnLoad au lieu de Page_Load). Pour implémenter l'une de ces substitutions, il vous suffit de taper "override" dans le code-behind et d'appuyer sur espace pour obtenir une liste des méthodes que vous pouvez substituer.

4voto

Zhaph - Ben Duguid Points 18573

Avec l'inestimable ReSharper installé (peut fonctionner sans), je peux simplement taper :

override

et lorsque j'appuie sur espace, IntelliSence affiche une liste de tous les événements que je peux remplacer tels que OnInit, OnPreRender, etc.

3voto

Scott Ivey Points 19577

Comme raccourci pour voir ce qui est disponible, vous pourriez simplement taper "Page." et regarder la liste dans l'intellisense. Vous pourriez ensuite en choisir un, appuyez sur +=Tab Tab pour générer le modèle pour vous. Une fois le modèle créé, vous devrez supprimer la ligne "Page.event+=" là où vous l'avez créée. Une sorte de bidouillage, mais cela peut fonctionner assez rapidement une fois que vous avez compris le truc.

0voto

chongo Points 1

Dans la fenêtre du code source, à partir de la liste d'objets déroulante, sélectionnez le contrôle souhaité (page). Ensuite, dans la liste d'événements déroulante qui se trouve à droite de la liste d'objets précédente, sélectionnez l'événement souhaité. Visual Studio créera le gestionnaire d'événements pour vous.

0voto

Si l'on ne souhaite pas utiliser la méthode décrite par M4N mais passer par le code :

Dans PageName.aspx.cs ;

private void InitializeComponent()
{

    // this.LifeCycle += .. // Utilisez l'intellisense pour voir facilement les alternatives
    this.PreRender += new System.EventHandler(this.NomFonctionEvenement);

}

puis dans le même fichier ajouter :

private void NomFonctionEvenement(object sender, EventArgs e)
{
    // Code..
}

MISE À JOUR (du commentaire de Sahuagin) : Cela ne générera pas un gestionnaire d'événements avec le nom approprié. Le gestionnaire d'événements doit être nommé, par exemple, Page_Load. Cela va le nommer d'après votre classe plutôt que d'après Page, et donc il ne sera pas réellement connecté à votre page

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X