שקט, מנווטים...

בטיטi

New member
שקט, מנווטים...

משימתי היא לבנות אפליקציית ASP.NET 2.0 שהניווט בה יהיה שקט, כמו ב Gmail. מכיר AJAX, מכיר FAJAX (הטריק לא ממש עוזר, ובכל מקרה - צריך גם תמיכה ב FF). התחלתי בכיוון שייעצו לי, להפוך כל Page ל User Control, ואז לטעון דינאמית את הנדרש. הנ"ל יוצר מספר בעיות : 1. כל ההתעסקות עם ה Load Control לא ממש יציבה ונוחה (או שאני לא יציב
2. אי אפשר להשתמש ב Master Page 3. במקום כפתורי נביגציה (שה ONCLICK שלהם רשומים כ EVENT ל UpdatePanel) , אני רוצה לעבור להשתמש ב skmMenu, לכן אני מניח שצריך להתלבש על הקוד שלו כדי שירנדר קוד אחר, במקום הקיים, עבור ההקלדה על אפשרויות בתפריט, לא ? (כיום הוא מרנדר TD לכל אופציה התפריט, שב onclick שלה משנים את ה location.href), נראה לי שאני הולך ומסתבך. ניווט שקט כמו ב GMAIL זו המשימה, אני צריך לעשות זאת על הצד הטוב ביותר. אשמח לכל עזרה / הכוונה.
 

בטיטi

New member
בבקשה

כנסי ל Gmail, תעברי בין האפשרויות, מיילים, תיקיות וכו'...
 

Admini

New member
לענ"ד - לא לעבוד עם האובייקטים

אלא לבנות את הכל בעצמך. לעבוד עם JS, לבנות XMLים בשרת וכל מה שמסביב. הרבה יותר עבודה - אבל ככה הכי טוב.
 

בטיטi

New member
איך זה עונה על השאלה ../images/Emo13.gif

זה לא משנה אם אני עובד עם AJAX של ASP.NET, או כותב את ה XMLHTTP בעצמי, אני שואל יותר על הקונספט, ועל תכנון טכני נכון.
 

[eLad]

New member
תשובות

1. למה אתה מתכוון? מבחינת יציבות - אתה יכול לאבד ViewState אם אתה לא טוען את הקונטרול בעליית העמוד, וגם כשאתה עובר לקונטרול אחר דרך הפעלת event של קונטרול אחד, אתה צריך להוסיף את הראשון כדי לשמור על ה-EventHandler שהופעל. הרי ה-events לא נשמרים ב-state של השרת, אלא בקוד. אם הם לא יהיו שם להזכיר לשרת שהם קרו, הוא יתעלם או יזרוק שגיאה על הקריאה. 2. אלה קונטרולים, הם לא אמורים להיות בתוך MasterPage 3. כן, אתה צריך לרנדר קוד אחר, כזה שמשתמש במנגון ה-PostBack ומחולל פונקציות doPostBack__. אתה יכול לרשת מהמחלקות של התפריט, לדרוס את מתודת הרינדור כך שתוסיף, למשל LinkButton, והשתמש ב-Url שאתה מזין כשם הקונטרול אותו אתה רוצה להציג. אתה צריך, כמובן, לתת EventHandler מתאים ללחיצה על אותם LinkButtons. ובקשר ל-FAjax - יש אפשרות לכתוב משהו דומה שיתמוך גם ב-FF.
 

בטיטi

New member
תגובה :

1. אין לי דוגמאות פרקטיות, פשוט קראתי במספר מקומות שלא כדאי לעבוד עם LoadControl... 2. בפועל אלו דפים מלאים, אני אהפוך כל דף ל User Control, רק כדי שאפשר יהיה לטעון אותו דינאמית, ולכן אני מאבד את היכולת להשתמש ב MasterPage... 3. יש לך דוגמא לנושא ? 4. לגבי FAjax, גם ב IE לא ממש ראיתי את זה עובד, היה הבהוב/פוסטבק שנראה לי כרגיל, יש לך דוגמא עובדת ? 5. איך אתה מציע לתכנן אפליקציה שתעניק חוויית משתמש במו GMAIL ?
 

[eLad]

New member
תגובה

1. אני עובד עם LoadControl ואין תלונות. רק צריך לדעת לעבוד נכון. 2. צודק, אבל עקב הצורה בה MasterPages בנויים (כקונטרולים שמתווספים לעמוד) תוכל ליישם משהו משלך שיתאים לצרכים שלך. 3. אני לא מכיר את הקוד של התפריטים. אני מניח שמדובר בקונטרול שהוא בעצם קלאס שמכיל את כל ההגדרות וגם את הרינדור לפלט. פשוט צור מחלקה שיורשת מאותו קלאס, מצא את המתודה האחראית על הרינדור ודרוס אותה עם מתודה משלך. אם אין לך את קוד המקור של התפריטים, תוכל להסתכל ב-Reflector איך הוא בנוי. 4. נכון, ה-FAjax הוא סה"כ אפקט מובנה ב-IE. אתה יכול ליצור פונקציה כזו: מקבלת URL טוענת את כולו ב-XMLHTTP מחליפה את התוכן של document.body בתוכן החדש ואז, לעבור על כל הלינקים בעמוד (getElementsByTagName) ולשים להם ב-onclick הפנייה לפונקציה הזו עם ה-href שלהם, וביטול הלחיצה עם return false. 5. בדרך בה אתה משתמש כעת, החלפה של Controls בעזרת LoadControl, תוך התייחסות מירבית ליעילות, וללבטים כמו מתי לטעון קונטרול שלם, מתי לבצע PostBack (עם המנגנון של ASP Ajax) ומתי לפנות ל-WebService כדי לקבל מידע במינימום משקל, גם בלי לשלוח יותר ממה שצריך. בקשר ל-gmail - תוכל להשתמש בכלי כמו fiddler כדי לראות מה הנתונים היוצאים והנכנסים.
 

בטיטi

New member
תגובה :

1. טיפים כללים ? 2. כן, כמו שעבדתי פעם ב 1.1, לכתוב MasterPage משלי
3. מכיר תפריט מוכן שמאפשר הצמדה של ארועי JS לבחירת אופציה בתפריט, ולא רק שינוי URL ? 4. זה מה שהייתי עושה פעם עם XMLHTTP, פשוט רציתי להתקדם קצת לפתרונות מובנים.. 5. האם לא עדיף לטעון את קל הקונטרולים, ואז לשחק את ה Visible הרלוונטי ?
 

[eLad]

New member
תשובות

1. אם תהיה ספציפי בנוגע לבעיות, אנסה לתת מענה
2. סה"כ לתת לקונטרול אפשרות של קונרטול לפני וקונטרול אחרי, לא חושב שבאמת יש צורך ב-.MasterPage 3. לא. 4. צודק, זה לא פתרון, סתם דרך ליצור את האפקט גם ב-FF. זה כמעט כמו לטעון את כל העמוד ב-PostBack מבחינת משקל. 5. תלוי במספר הקונטרולים שלך, תלוי אם יש לך קונטרולים דינאמיים ואתה מתעתד להוסיף עוד כאלה עם הזמן.
 
למעלה