יום רביעי, 20 בפברואר 2013

מתי FORM מבאס?

עד כמה שאני מבין את הקטע של winForn, שבדף HTML רגיל אם נרצה לשלוח מידע לשרת בצורה הבסיסית ביותר נשתמש בתגית <from>.
אמרו החברה ממיקרוסופט בא ניקח צעד קדימה את הקטע של צד לקוח ושרת, ונהפוך גם את הצד לקוח כמעט לצד שרת.
לכן כדי שהשרת יכיר את האלמנטים שנמצאים בדפדפן נוסיף הרבה תגויות ותוויות, לכן לדוג' אם הDIV שלכם יהיה כתוב כך:
<div id="select">
לאחר רינדור של הדף דפדפן בשרת הוא יראה כך:
<div id="MainContent_select">

מתי זה מבאס?
כשנרצה להוסיף אלמנטים בדף, ושהשרת יכיר אותם. הדוגמא הפשוטה, נרצה להוסיף תיבת טקסט והשרת יכיר אותה. מכיוון שהרינדור נעשה בהתחלה - לא נוכל להוסיף לאלמנט את המאפיין החשוב runat=server.
לא ניסיתי לבצע פתרון באמצעות רינדור של הדף מחדש (postBack), אלא מצאתי פתרון אחר שאשמח לספר:
בלחיצה על הכפתור ששולח את הטופס עם כל הנתונים, אני מבצע שליחה לשתי פונקציות:
הראשונה לJS בדף שמטפלת בכל האלמנטים שנוספו ואוספת מהם את המידה. ואז את המידע מעבירה לHiddenField בדף.
השנייה שחוזרת אל השרת, ולוקחת מהHiddenField את כל הטקסט שנאסף.
בדף יהיה:
<div id="p1">בלה בלה בלה</div>
<asp:HiddenField ID="AllText" runat="server"/>

כפתור השליחה (בעל 2 הפונקציות) יראה כך:
 <asp:Button  ID="buttonCreate" runat="server" Text="צור"   OnClientClick="javascript:getAllValues();" OnClick="buttonCreate_Click"/>

והJS יראה כך:

function getAllValues() {
            var AllText = document.getElementById("MainContent_p1").innerText;
            document.getElementById("MainContent_AllText").value = AllText;
        }

אין תגובות:

הוסף רשומת תגובה