העברת מידע בין דפי ASP

תאריך פרסום: 17:51:22 12/05/2011

העברת נתונים בין דפי ASP יכולה להיעשות במספר דרכים;

כאן אציג שתי דרכים מקובלות.

דרך ראשונה - שיטת GET

מוכרת מפעולת חיפוש בגוגל למשל, היא Request.QueryString.

הכוונה היא להעברת נתונים בשורת הכתובת של הדף הבא

שליחת הערכים:

Response.Redirect("NewPage.aspx?fName=Snir&City=Tlamim");

קבלת הערכים בדף החדש NewPage.aspx תהיה בקוד הבא:

C#:

string str

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

if (Request.QueryString[0].Length > 0)

{

str = Request.QueryString[0].ToString();

}

{

}

כמו כן וכפי שאפשר לראות נהוג למקם את הקוד בתוך תנאי שלילת IsPostBack כדי למנוע הצבה חדשה של הערכים ברענון הדף,

וכדאי גם לבדוק שהאורך של המחרוזת שהתקבלה גדול מ-0 כדי להימנע מטעינה ועבודה של כלום.

חסרונות שיטה זו הם מגבלת תוויים אפשרית - 256 תווים של שורת הכתובת, וחשיפת המידע שהועבר לדף החדש לכל משתמש (מה שלפעמים נחשב ליתרון, ראה לדוגמה חיפוש בגוגל)

דרך שניה - Session

היא להשתמש בשדה Session ששומר השרת עבור כל משתמש למשך 20 דקות, ובו בין היתר אפשר לשמור משתנים.

המשמעות היא שניתן להעביר דרכו את הנתונים שהעברנו בשורת הכתובת, עם שני יתרונות משמעותיים:

1 - אין הגבלת מספר תווים

2 - המידע שמועבר שמור בשרת ואינו גלוי למשתמש.

השימוש בשיטה זו פשוט:

שמירת משתנה בעמוד השולח -

Session["sendMe"] = var1;

שליפת המשתנה בעמוד מקבל -

var2 = Session["sendMe"];

דרך שלישית שיטת POST

מעבירה את הנתונים בטרנזקציית העברת Http באמצעות שליחת נתוני Form ואינה מוגבלת במספר תווים.

Html:

<html>

<body>

<form action="demo_form_method_post.asp" method="post" target="_blank">

First name: <input type="text" name="fname" /><br />

Last name: <input type="text" name="lname" /><br />

<input type="submit" value="Submit" />

</form>

</body>

</html>