שאלה לגבי FORM ש-ASP.NET

  • פותח הנושא dc24
  • פורסם בתאריך

dc24

New member
שאלה לגבי FORM ש-ASP.NET

שלום נתקעתי במשהו ואני מתחרפן , אולי מישהו יוכל לעזור לי יש לי בדף הראשון טופס פשוט : תיבת טקסט , תוית, וכפתור (SUBMIT). בלחיצה על הכפתור מתבצע POSTBACK בו אני בודק אם הנתון תקין - אם כן אני רוצה לעבור לדף השני ולהעביר את הנתון. אני לא רוצה שהנתון יעבור ב-URL כלומר לא ב-GET אלא ב-POST. אבל כשאני משתמש ב-REDIRECT אז הנתון שבתיבת הטקסט לא עובר. יותר מזה , ניסיתי לשנות את המאפיין ACTION שב-FORM. אבל בזמן שאני ממש נכנס לאתר (מריץ את התוכנה) אז ה-ACRION משתנה והופך להיות לשם של הדף שבו הוא נמצא , כלומר לשם של הדף הראשון. מישהו יודע איך אני עושה את זה ?? בבקשה , זה מאוד דחוף לי. תודה רבה
 

imitsu

New member
תנסו את זה

גם לי היתה בעיה דומה.. אני מקווה שזה יעזור לכם: תנסו להעביר את הנתון דרך session ל-web form אחר בצורה הבאה:
Session["Id"]=str1[2]; Response.Redirect("Add or Update customer.aspx");​
str[2] זה ID שהומר לסטרינג ומועבר דרך session לדף בשורה השנייה בדף המקבל פשוט כותבים :
string x = (string)Session["id"];​
תודיעו אם זה עבד :)
 
אבל הם שאלו דרך הPOST

לא דרך הSESSION ,לא דרך הGET ולא דרך עזה, זה כמו לטאטא את הליכלוך מתחת לשטיח . מה גם שצריך לשאוף ליעילות
 

imitsu

New member
בנאדם..

אז סליחה.. טעות.. לא צריך להתנפל כאילו יריתי במישהו רק ניסיתי לעזור, זה הכל. ובלי קשר, למה שימוש ב-session לא יעיל? (ואני שואל ברצינות אז אל תתנפל..)
 
לא התכוונתי להתנפל

בכול מקרה סליחה ,אם זה נשמע כך, לגבי יעילות(מבחינת זמן אין לי מושג אם זה יעיל) אבל מבחינת זיכרון זה לא יעיל. נניח יש 100 משתמשים באתר כפול המשתנה Session, וזה רק גודל -כי המשתנה נשאר זמן מסוים בהתאם להגדרה שנקבע לו
 

YardenST

New member
את תג הform

שמת בלי התכונה runat=server? כי אם כן אז הוא יעשה postback ואם אתה רוצה לבדוק נתונים ואחר כך לעבור לדף אחר תקרא את זה: http://aspnet101.com/aspnet101/tutorials.aspx?id=20
 

dc24

New member
אני לא רוצה לבדוק לפני.

אני רוצה שבדף הבא אני יוכל לקבל את הנתונים דרך POST
 

dc24

New member
ועוד משהו

מה זה משנה אם ני משתמש ב-Session לשמירת הנתונים או ב-context כמו בדוגמא ??
 

itzikbs

New member
אני חושב שאתה קצת מבולבל ...

פלטפורמת ה .NET באה ליצור מצב שיישומי \ אתרי WEB יהיו "כביכול" כמון יישומי Window Application, כך שלתוכניתנים הכל יהיה "שקוף",כל הפעולות יהיו באתו עמוד קוד, וכולי ... כלומר אם אתה צריך לשמור, לעבד או לעשות משהו עם מידע שהגיע מתוך TEXTBOX או LISTBOX או משהו אחר, אתה יכול "לתפוס" את המידע הזה באמצעות מנגנון ה – POSTBACK ו VIEWSTATE ןזאת על מנת למנוע מצב של מעבר לעמוד אחר שעושה את פעולה שנגררה מעמוד קודם (... בקיצור SUBMIT למרות שברקע זה בדיוק מה שקורה ... תוכל לעשות VIEW SOURCE לעמוד שלך ותוכל ללמוד המון דברים על מנגנון ה RENDER של NET). לשאלתך, אתה בעצם משתמש NET אבל עובד כמו "פעם". אם אתה רוצה "להעביר" לעמוד אחר באמצעות POST , פשוט תשתמש ב FORM כפי שהיה נהוג. <form action=”MyAction” method=”POST” … > ובקוד שלך "תתפוס" את ה תיבת טקסט שלך באמצעות Request.Form… הרבה פעמים אנו רוצים להשתמש ב ASPX כמו ב ASP - לא זאת המטרה והכוונה אבל לעיתים זה מהיר ומבצע את המשימה
 

dc24

New member
זה בדיוק מה שעשיתי ומה ששאלתי

אמרת : "אם אתה רוצה "להעביר" לעמוד אחר באמצעות POST , פשוט תשתמש ב FORM כפי שהיה נהוג. <form action=”MyAction” method=”POST” … >" לכן נכנסתי לקוד ושיניצי את ה-ACTION. אבל כשהצגתי את הדף... וואלא ... קסם !!! ה-ACTION השתנה בחזרה והפך להיות שם הדף הנוכחי. זו למעשה היתה השאלה המקורית שלי.
 
למעלה