UpdatePanel + MasterPage

בטיטi

New member
../images/Emo41.gifUpdatePanel + MasterPage

אני צריך למצוא דרך לגרום לאפליקציה לזרום ללא פוסטבקים. יש לי MasterPage לאפליקציה (ASP.NET 2.0), שמוגדר בו ה Header, התפריט וה Footer. את ה contentplaceholder שמתי בתוך ה ContentTemplate שבתוך ה UpdatePanel, מתוך ציפייה שכעת הדפים באתר/אפליקצייה יטענו ע"י פוסטבק שקט. אבל עדיין אין שינוי, מתבצע פוסטבק במעבר בין דף לדף. כיצד עושים זאת נכון ?
 

בטיטi

New member
Problem with UpdatePanel...

למי שמעוניין לעקוב אחר הנושא, פרסמתי את השאלה גם בפורומי ASP.NET.
 
לא מתבצע שום PostBack

במעברים בין דפים, UpdatePanel משתמש ב - Js בכדי לשלוח טופס וזה קורה רק אם טופס נשלח. אני חושב שפספסת כמה דברים באמצע, כדאי שתקרא קצת על דרך הפעולה של Ajax, ובנפרד של UpdatePanel ומה הוא עושה.
 

בטיטi

New member
הבנת את הכוונה...

כתבתי פוסטבק למרות שלא זו הכוונה, הכוונה היא שנשלח מידע מטופס לשרת, אלא כאשר בוחרים לעבור לדפים אחרים דרך התפריט, נשלחת כמובן בקשת HTTP חדשה לשרת, ומקבלים את הדף המבוקש. המטרה שלי היא שהגולש לא יראה את ה "הבהוב", אלא שהדף החדש יטען בצורה שקטה. כיצד עושים זאת ?
 

[eLad]

New member
תעבוד עם LinkButton במקום <a>

וב-OnClick/OnCommand שלו בצע פעולה. לחיצה עליו תשלח את הטופס עם doPostBack.
 

[eLad]

New member
המשך

פעולה = העלמת התוכן של ה-PlaceHolder ולטעון לתוכו Control אחר.
 

בטיטi

New member
אני מתכוון למעבר בין דפים...

גם אם אני אשתמש ב LinkButton, אני לא שולח טופס, אני פשוט מנווט ל WebForm אחר... או שלא הבנתי את ההצעה שלך
 
אתה לא יכול...

אתה חייב להשאר באותו הדף, אתה יכול רק לשלוף את התוכן של הדף השני, אבל הדף ישאר אותו דף.
 

בטיטi

New member
../images/Emo26.gifאני מעוניין שהתחושה תהיה

כמו ב GMAIL, אין רפרושים בין דפים. פעם עשיתי זאת ע"י WebForm אחד כללי, וכל לחיצה על תפריט מפעילה פונקציית JS, השואבת ב xmlhttp את התוכן של הדף שבחרו מהתפריט, ודוחפת אותו לדף הכללי. זה אפשרי, כך עשיתי זאת פעם, השאלה היא האם כעת עם אטלס זה יכול להיות פשוט יותר..
 
כן...

אתה עושה טופס, ובו אתה שם Div כלשהו, אתה דואג שכל הלינקים יהו כפתורים ולא לינקים, ובלחיצה על כפתור אתה שואב את התוכן של הדף עם WebRequest, ואתה עושה div.InnetHtml= התוכן של הדף (הdiv הוא HtmlGenericControl), אח"כ אתה שם את הכל ב - UpdatePanel, למרות שזה לא נשמע לי חכם, עדיף כבר את השיטה שלך, שהיא לא יותר מסובכת.
 

בטיטi

New member
אבל...

זה בדיוק כמו ההצעה שלי, רק השתמשת ב WebRequest בצד השרת עם UpdatePanel, במקום xmlhttp ב JS
 

[eLad]

New member
אתה יכול לעבוד עם User Controls

שים PlaceHolder בתוך ה-UpdatePanel. בעליית העמוד טען לתוכו איזשהו UserControl, למשל DefaultUserControl.ascx. כל העמודים שלך יהיו User Controls. כל לינק יהיה LinkButton עם ו-CommandArgument של שם הקונטרול וב-OnCommand נקה את ה-PlaceHolder וטען לתוכו את אותו Control של ה-CommandArgument. אמנם זה יהיה קצת כבד לדעתי.
 

ברק קרב

New member
האם אתה מתכוון שרק בסוף מילוי הטופס

יתרחש פוסט בק? אם כן - אתה יכול לבטל לכל החלקים את הפוסט בק למעט לכפתור רגיל (של DOTNET) שתשים למטה, ואז רק הוא יבצע פוסט בק. אם התכוונת שאתה רוצה שבכל מקרה לא יהיה רפרש בין הדפים לא נראה לי שאפשר.
 

בטיטi

New member
אפשר זה בטוח ../images/Emo13.gif כמו...

כמו ב GMAIL, אין רפרושים בין דפים. פעם עשיתי זאת ע"י WebForm אחד כללי, וכל לחיצה על תפריט מפעילה פונקציית JS, השואבת ב xmlhttp את התוכן של הדף שבחרו מהתפריט, ודוחפת אותו לדף הכללי. זה אפשרי, כך עשיתי זאת פעם, השאלה היא האם כעת עם אטלס זה יכול להיות פשוט יותר..
 

ברק קרב

New member
מצאתי משהו שיכול לעזור, צריך להתעמק

תנסה רכיב שנקרא wizard, אמרו לי שזה כנראה מה שאתה מחפש.
 

EdotK

New member
טעות קלאסית.

או למעשה טעות אחת קלאסית ואחת טפשית. 1. MasterPage לא מכיל את הדפים שלך, אלא כל דף מכיל את הMasterPage! MasterPage הוא למעשה UserControl רק שהאופן שבו זה בנוי הוא די מבלבל. היות והמסטר פייג' הוא UserControl - אם תשים Update Panel בתוך UserControl בתוך דף כלשהו - ותרצה לעבור לדף אחר - כמובן שיתבצע PostBack - הרי אתה עובר בין דפים!! הפתרון ספציפית לזה הוא כמו שאלעד הציע לך. 2. מתכנתים שלא מבינים את הטכנולוגיה שבה הם משתמשים הם מתכנתים לא טובים. כל הפיצ'רים החזקים של asp.net הם טובים כל עוד אתה מבין איך הם עובדים וזו דוגמא קלאסית לכך. תלמד איך אג'קס עובד, ורק אז תשתמש ביכולות הללו. אתה סתם בונה דפים מאוד כבדים ומאוד לא נוחים למשתמשים שלך שלא חוסכים כלום. אני מבטיח לך שככה החבר'ה מגוגל לא בונים את האתרים שלהם.
 

בטיטi

New member
לא טעות, ובטח לא טפשית

1. אף אחד לא אמר ש MasterPage מכיל דפים. 2. כתבתי "AJAX" עוד לפני שנתנו לו את השם הזה, פשוט ע"י xmlhttp (שזה בפועל מה שזה). א. איך אתה יודע שהדפים שלי כבדים ? ב. אתה מבטיח שלא ככה הח'ברה מגוגל בונים, אתה יודע איך הם בונים ? ג. מה לגבי הצעה פרקטית ?
 
למעלה