מדריך ASP.NET – ניהול State בצד לקוח
ניהול State בצד הלקוח הוא שם כולל לכל הפעולות שאנו עושים כדי לשמור נתונים על מחשב (ודפדפן) הלקוח.
במדריך זה נסקור את הכלים שברשותינו על מנת לשמור נתונים בדפדפן.
ViewState
אם נתבונן ב – HTML הנוצר עבור הדפדפן מדף ASPX נראה את הדבר הבא:
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
value="/wEPDwUKLTE0ODM1NDQ2OQ9kFgJmD2QWA
gIDD2QWAgIFD2QWAgIBDxQrAAJkEBYAFgAWAGRkC
RKuJ6UkvoiqWwXj4Zp9pCeIFA8mZv3XY3fwOJNCr4k=" />
זהו שדה מיוחד שנוצר ע"י ה-ASPX ששומר בתוכו נתונים על הדף, על הפקדים שבתוכו, ומידע נלווה שהמפתח יכול לשמור לעמוד.
מה הוא שומר?
לכל פקד ישנו מאפיין בוליאני שנקרא EnableViewState. אם הערך שלו יהיה True (ערך ברירת המחדל של רוב הפקדים) אזי כל שינוי שיהיה בפקד אצלינו בדפדפן, ישמר בשרת ונקבל אותו גם ב – Postback הבא שנעשה. לדוגמא: אם בפקד תיבת טקסט (TextBox) נשנה בקוד את מאפיין BackColor של תיבת הטקסט ל – Blue, הוא ישאר במצב הזה גם ב – Postbacks הבאים, גם אם לא נשנה שוב בקוד את המאפיין הזה.
ואיך זה עובד?
יחד עם הדף יורדים נתונים על מצב הפקדים בשדה נסתר שנקרא __VIEWSTATE, שם נשמרים כל הנתונים אודות הפקדים. תוכן השדה הזה יגדל או יקטן בהתאם למספר הפקדים בדף בהם המאפיין EnableViewState הוא True .
ב – ViewState ניתן לשמור גם נתונים שאינם קשורים לפקדים. לדוגמא, אם נרצה לשמור את הפעם האחרונה בה נטען הדף ללא Postback נוכל לכתוב את הקוד הבא:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ViewState["LastInitialLoad"] = DateTime.Now;
}
}
ה – ViewState נשמר כאשר אנחנו באותו הדף, ובמידה ועוברים מן הדף לדף אחר, ה – ViewState מתנקה.
Hiddden Field
שדות נסתרים הם כלי המאפשר לנו לשמור מידע שלא יראה למשתמש. המידע הזה נשלח לשרת בכל Submit כיוון שהוא נשמר בשדות. דוגמא טובה לכך אנו רואים בחלק המדבר על ViewState שכן הוא נשמר בשדה כזה. ניתן כמובן גם לייצר שדות נוספים ולשמור בהם נתונים שונים.
בצד השרת קיים פקד המייצר Hidden field, שנקרא HiddenField עבורו נכתוב לדוגמא בדף ה – ASPX את הקוד הבא:
<asp:HiddenField runat="server" ID="myHiddenField"
Value="My Hidden Value" />
זהו ה – HTML הנוצר ממנו:
<input type="hidden" name="myHiddenField"
id="Hidden1" value="My Hidden Value" />
Query String
ניתן לשמור מידע בתוך הקישורים ע"י הוספת פרמטרים. הפרמטרים האלו ישלחו לשרת כשדות לכל דבר (כמו Hidden fields או תיבות טקסט)
ובשרת ניתן יהיה להשתמש בנתון שנשלח. לדוגמא: בקישור https://www.webmaster.org.il/article.asp?id=646 ישנו פרמטר בשם id עם הערך 646. כאן השרת יודע לשלוף מדריך מסויים באתר לפי הפרמטר.
Cookie
העוגיות (Cookies) הם קבצים קטנים הנמצאים במחשב הלקוח ותפקידן לשמור מידע, לעיתים גם לאחר שהלקוח סוגר את הדפדפן. ה – Cookies נשלחים לשרת כל פעם כחלק מה – Request ולעיתים השרת עושה בהן שימוש. לדוגמא – אם נרצה לשמור את תאריך ההתחברות האחרון של המשתמש נוכל לעשות זאת כך:
Response.Cookies["LastLoginDate"].Value = DateTime.Now.ToString();
אם נרצה לעשות שימוש בנתון נוכל לפנות אליו כך:
string strLastLoginDate = Request.Cookies["LastLoginDate"].Value;
תגובות בפייסבוק