Τρίτο και τελευταίο post σχετικά με τον κύκλο ζωής μια σελίδας στην ASP.NET. Τα δύο προηγούμενα μπορείτε να τα βρείτε εδώ :
ASP.NET Page Life - Cycle Part I , ASP.NET Page Life - Cycle Part II
Σε αυτό το post θα περιγραφούν τα events στον κύκλο ζωής της σελίδας. Ξεκινάμε :
PreInit: Οι ποιο κοινές λειτουργίες που υλοιποιούνται σε αυτή τη μέθοδο είναι οι εξής :
- Ελεγχος του IsPostBack property
- Καθορισμός της Master Page ή του Theme της σελίδας δυναμικά
- Ανάγνωση ή αποθήκευση τιμών των profile properties
- Επαναδημιουργία δυναμικών controls
Init: Αυτό το event γίνεται raised αφού έχουν αρχικοποιηθεί όλα τα controls στ σελίδα και έχουν ρυθμιστεί όλα τα skin properties. Αυτό το event χρησιμοποιείται για να διαβάσει ή να αρχικοποιήσει control properties. Μπορεί να χρησιμοποιηθεί για να γίνουν register events τα οποία δεν δηλώνονται στην aspx σελίδα. πχ Το OnClick Event ενός Button μπορεί να δηλωθεί τότε αντί χρησιμοποιώντας το OnClick property στην aspx σελίδα.
InitComplete: Χρησιμοποιήστε αυτό το event αν κάποιες διεργασίες απαιτούν να έχει ολοκληρωθεί η αρχικοποίηση. Σε αυτό το στάδιο δεν είναι δυνατόν να προστεθούν controls δυναμικά.
PreLoad: Αυτό το event χρησιμοποιείται αν πρέπει να επεξεργαστούν controls που υπάρχουν στη σελίδα ή η ίδια η σελίδα πριν το Load Event. Μόλις γίνει raise αυτό το event φορτώνεται το viewstate της σελίδας και των controls και μετα γίνεται η επεξεργασία των δεδομένων postback , αν υπάρχουν που συμπεριλαμβάνονται στο συγκεκριμένο instance του request.
Load: Η σελίδα καλεί το OnLoad Event του εαυτού της και στη συνέχεια κάνει αναδρομικά το ίδιο για κάθε child control που περιέχει, το οποίο κάνει ακριβώς το ίδιο για τα δικά του child controls κ.ο.κ. Αυτό το event χρησιμοποιείται για να δωθούν τιμές σε properties που αφορούν controls , να δημιουργηθούν connections κλπ. Είναι το ποιο συχνα χρησιμοποιούμενο event.
ControlEvents: Χρησιμοποιούνται για να γίνουν handle συγκεκριμένα control events όπως ένα click ενός button, ή η αλλαγή του κειμένου σε ένα TextBox με το event TextChanged.
LoadComplete: Εδώ εκτελούνται εργασίες που απαιτούν όλα τα άλλα controls στην σελίδα έχουν φορτωθεί.
PreRender: Αυτό είναι το τελευταίο event που γίνεται raised πριν δημιουργηθεί ο HTML κώδικας της σελίδας. Το event αυτό γίνεται raised και για κάθε child control της σελίδας. Χρησιμοποιείται όταν θέλουμε να κάνουμε τελικές αλλαγές στο περιεχόμενο της σελιδας ή των contorls.
SaveStateComplete: Πριν από αυτό το event το ViewState έχει καταχωρηθεί για τη σελίδα και τα controls. Όποιος αλλαγές γίνονται στη σελίδα ή στα controls σε αυτό το σημείο αγνοούνται. Χρησιμοποιείται όταν θέλουμε να εκτελέσουμε εργασίες που απαιτούν το Viewstate να είναι καταχωρημένο αλλά δεν κάνουν αλλαγές στα controls.
Render: Αυτό είναι το στάδιο στο οποίο δημιουργείται ο HTML κώδικας της σελίδας. Η σελίδα (Page Object) καλεί την μέθοδο Render για κάνε ένα από τα controls.Όλα τα ASP.NET Server Controls έχουν μια μέθοδο Render που γράφει τον markup κώδικα που στέλνεται στον browser.
UnLoad: Αυτό το event εκτελείτε για κάθε control της σελίδας και μετα για τη σελίδα. Για τα controls μπορεί να χρησιμοποιηθεί ώστε να γίνει το τελικό "ξεκαθάρισμα" όπως το κλείσιμο ενός database connection που αφορούν το συκγεκριμένο control. Για τη σελίδα μπορεί να χρησιμοποιηθεί με παρόμοιο τρόπο όπως κλείσιμο ανοιχτών αρχείων, logging και άλλες εργασίες που είναι εξαρτημένες από το εκάστοτε request.
Credits :
Τελειώνοντας αυτή την σειρά των 3 posts θεωρώ σκόπιμο να αναφέρω και τις πηγές. Η πρώτη και κύρια πηγή είναι αυτό εδώ το άρθρο στο οποίο στηρίζονται και τα 3 posts. Τα υπόλοιπα links τα χρησιμοποίησα για να ξεκαθαρίσω ότι αναφερόταν λίγο μπερδεμένα στο παραπάνω άρθρο.
http://msdn.microsoft.com/en-us/library/ms178472.aspx
http://msdn.microsoft.com/en-us/library/2ccyd347.aspx
http://msdn.microsoft.com/en-us/library/system.web.ui.page_events.aspx
Τέλος να ευχαριστήσω και τον Δημήτρη (aka dt008) για όλες τις επιπλέον Info και διευκρινήσεις που μου έδωσε.