וובמאסטר - תיכנות ובניית אתרים

מדריך ASP.NET - ניהול State בצד לקוח

IdoFlatow ,‏ מכללת סלע‏ ‏/‏ 4 פברואר, 2011
F+
F-

ניהול 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 או תיבות טקסט)
ובשרת ניתן יהיה להשתמש בנתון שנשלח. לדוגמא: בקישור http://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;

IdoFlatow, מכללת סלע

יועץ ומרצה בקבוצת סלע לתחומי Web ו-Data. עוסק בתחומים Asp.Net, WCF, Silverlight, IIS ו-Entity Framework.
כותב הקורס הרשמי של מיקרוסופט ל-WCF וכן שותף בכתיבת הספר ASP.NET Programmer's Reference (ISBN 978-0470505458)
תגיות: פיתוח‏  /  צד שרת‏  /  מדריך‏  /  ASP.NET‏  /  .net‏  

תגובות בפייסבוק

תגובות למאמר



עוד במדריך

תגיות פופולאריות

X
הצטרף לעמוד שלנו בפייסבוק להישאר מעודכן!
וובמאסטר © כל הזכויות שמורות