מדריך ASP.NET – מחזור חיים של עמוד
לאחר שיצרנו את העמוד הראשון שלנו נרצה לכתוב קוד עבור התנהגות הדף בצד השרת. לדוגמה, נרצה שכאשר נלחץ על כפתור – תתבצע פעולה כלשהי בשרת.
על מנת להוסיף כפתור נוח יהיה לעבור למצב Design. על מנת לעבור למצב זה נלחץ פעמיים על קובץ ה – ASPX שלנו ולאחר מכן נלחץ על כפתור Design שבתחתית המסך.
כעת, נוסיף כפתור לדף שלנו. נוכל לעשות זאת ע"י בחירה של כפתור מתוך ה – Toolbox וגרירתו לדף. ה – Designer אמור להראות כך:
לאחר מכן, נרצה להוסיף קוד שמטפל בארוע של הקלקה על הכפתור. לאחר הקלקה כפולה על הכפתור ב-Design נראה ב – Code behind את הקוד הבא:
public partial class MyFirstPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
}
}
בתוך המתודה Button1_Click נוכל לכתוב את הקוד.
בנוסף, נראה ליד המתודה הזו עוד מתודה ריקה ש – Visual Studio ייצר עבורינו בשם Page_Load. המתודה הזו מופעלת כאשר הדף נטען לזכרון השרת.
מכיוון שאין קריאה למתודה אחת מהאחרת, כדאי לדעת שהמתודה Button1_Click תרוץ אחרי המתודה Page_Load. היא תרוץ
אחרי כיוון שמתודות המופעלות כתוצאה מארועי פקדים (כמו הקלקה על כפתור) נמצאות אחרי Page_Load במחזור החיים של הדף.
מהו מחזור החיים של הדף?
המושג "מחזור החיים של דף" (או "Page LifeCycle" באנגלית) הוא שרשרת הארועים המתרחשים בין הבקשה לדף מהדפדפן, לבין שליחת תוכנו חזרה לדפדפן ע"י השרת. מחזור החיים של הדף מורכב משלשת השלבים הבאים (קיימים עוד מספר שלבים, אך אלו הם העיקריים):
1. Page_Load – טעינת הדף לזכרון השרת.
2. הפעלת ארועי פקדים (מתודות כמו Button1_Click).
3. Render – יצירת ה – HTML שיוצג לבסוף בדפדפן.
Postback
לאחר הבקשה הראשונה שלנו וקבלת הדף, אנחנו יכולים לשנות נתונים בעמוד, ללחוץ על כפתור וכתוצאה מכך תבוצע שליחה של פרטי הדף לשרת ותופעל בשרת מתודה בהתאם לכפתור עליו לחצנו.
מה קורה כאשר לוחצים על הכפתור? הכפתור נלחץ בדפדפן (ולא בשרת) ולעומת זאת השרת "יודע" איזה ארוע קרה באיזה פקד (למשל, שנלחץ כפתור כמו בדוגמה שלפנינו). זיהוי זה מתאפשר הודות לתהליך שנקרא Postback בו הדפדפן שולח לשרת פרטים על מצב הפקדים ועל הארוע שגרם לשליחה לשרת, וכך השרת "יודע" איזה ארוע קרה ואיזו מתודה להפעיל.
בעלייה הראשונה של הדף, לא קורה כל ארוע של פקד. אנחנו יכולים גם לדעת האם הפנייה לדף היא כתוצאה מגלישה לעמוד בפעם הראשונה או כתוצאה מארוע ע"י בדיקת המאפיין IsPostBack. לכן, בד"כ הקוד ב – Page_Load יראה כך:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// בצע פעולות אתחול
}
else
{
// בצע את שאר הפעולות
}
}
תגובות בפייסבוק