DCSIMG
Validation Application Block with Strippers - Validation not using VAB - Justin myJustin = new Justin( Expriences.Current );

Validation Application Block with Strippers - Validation not using VAB

סדרת לומדים Validation Application Block עם חשפניות

1. קדם דבר: למה צריך וולידציה? (או: "קופים. פשוט קופים."), פורסם ב-26.6.2007

2. חלק ראשון: הפתרון הקיים והמצוי ב-Winforms, Console ו-ASP.Net (או: "איך קוראים לך ובת כמה את?"), פורסם ב-8.7.2007

3. חלק שני: שימוש ישיר ב-Validatorים של VAB (או: "איך לגרום לקוד יחסית קריא להפוך להיות ארוך ומעיק"), פורסם ב-9.7.2007

4. חלק שלישי: הכנסת נתוני הוולידטורים לתוך מחלקות (או: "ממלכתי עבור וולידטור ג'נארי"), יפורסם ב-11.7.2007

5. חלק רביעי: אינטגרציה בסיסית עם ה-GUI ו-וולידציה מתוך קבצי קונפיוגרציה (או: "קצת יותר Drag&Drop, קצת פחות קוד"), יפורסם ב-15.7.2007

6. המשך יבוא.

 

חלק ראשון: הפתרון הקיים והמצוי ב-Winforms, Console ו-ASP.Net (או: "איך קוראים לך ובת כמה את?")

נניח שאנחנו מנהלים מועדון חשפנות.

image_thumb711_thumb1

יש לנו אפליקציה שהיא אפליקציית Console, או אפליקציית WinForms או אפילו אפליקציית ASP.Net.

נפתח Solution ריק שיכיל באמת את שלושת ה-GUIים האלו:

image_thumb12_thumb

אנחנו רוצים עכשיו כמטרת על "לקלוט חשפנית חדשה". נרצה לקלוט שם חשפנית ואת הגיל שלה.  

בפרוייקט Winforms ניצור טופס חדש בשם NewStripper עם שתי Labels, שתי Textboxs וכפתור.

image_thumb14_thumb2

בפרוייקט ASP.Net ניצור טופס NewStripper.aspx זהה:

image_thumb16_thumb2

ובפרוייקט Console נכתוב את הקוד הבא:

namespace ConsoleVAB

{

    class Program

    {

        static void Main(string[] args)

        {

            Console.WriteLine("*** adding new stripper ***");

 

            Console.Write("Please enter stripper's name: ");

            string StripperName = Console.ReadLine();

 

            Console.Write("Please enter stripper's age: ");

            string StripperAge = Console.ReadLine();

        }

    }

}

 
נקבע שני כללים למערכות שלנו:
1. חובה להזין שם חשפנית
2. גיל החשפנית חייב להיות גדול מ-18
 

אם כללים אלו מופרים נרצה להציג על כך הודעה למשתמש.

 

נתחיל מה-Console.

אם שם החשפנית ריק נרצה להציג הודעה למשתמש:

            Console.Write("Please enter stripper's name: ");

            string StripperName = Console.ReadLine();

 

            if (string.IsNullOrEmpty(StripperName))

                Console.WriteLine("no stripper name supplied");

אם גיל החשפנית הוא לא מספר (למשל אם הוכנסה המילה "eightenn" ולא 18) נרצה הודעה מתאימה למשתמש, ואם הגיל קטן מ-18 נרצה להציג הודעה למשתמש.

            Console.Write("Please enter stripper's age: ");

            string StripperInputAge = Console.ReadLine();

 

            int stripperAge = 0;

            if (int.TryParse(StripperInputAge, out stripperAge))

            {

                if (stripperAge < 18)

                    Console.WriteLine("stripper is not 18 years old");

            }

            else

            {  

                Console.WriteLine("stripper's age must be a valid number");

            }

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

image_thumb24_thumb2

נלך לאפליקציית Winforms שלנו ונכתוב קוד מקביל שבמקום להדפיס ל-Console דואג להוסיף הודעות שגיאה ל-Label שהכנו מראש.
ל-Label נקרא lblErrors וצבע הטקסט בו יהיה אדום. בלחיצה כל הכפתור נדאג לבצע את כל הבדיקות שלנו.

        private void btnAddNewStripper_Click(object sender, EventArgs e)

        {

            if (string.IsNullOrEmpty(tbxName.Text))

                lblErrors.Text += "חובה להוסיף שם חשפנית. ";

 

            int stripperAge = 0;

            if (int.TryParse(tbxAge.Text, out stripperAge))

            {

                if (stripperAge < 18)

                   lblErrors.Text += "גיל חשפנית לפחות 18.";

            }

            else

            {

                lblErrors.Text += "גיל חשפנית חייב להיות מספר.";

            }

        }

ובהרצה זה יראה ככה:

image_thumb26_thumb2

נכתוב את אותו קוד בדיוק כמו ב-Winforms בלחיצה על כפתור בדף ה-ASP.Net שלנו.

בהרצת ה-ASP.Net זה יראה כך:

image_thumb32_thumb2

 

זה נראה לי כמו קוד שסביר להניח שיחזור על עצמו.
בדיקה של מחרוזת ריקה? טווח של מספרים? זה משהו יום-יומי ונפוץ לחלוטין!

למה שכל פעם נחזור ונכתוב אותו קוד שוב ושוב? בשביל משימות כאלו מיקרוסופט באו ואמרו ניצור לכם Applicaiton Blocks שמיועדים לטפל במשימות שחוזרות על עצמן.

משימה אחת כזו היא באמת Validation, בדיקת קלט מהמשתמש.

Published Sunday, July 08, 2007 11:30 AM by Justin-Josef Angel [MVP]

Comments

No Comments