Validation Application Block with Strippers: PropertyComparisonValidator (Overview of all VAB Validators)
סדרת לומדים Validation Application Block עם חשפניות
1. קדם דבר: למה צריך וולידציה? (או: "קופים. פשוט קופים."), פורסם ב-26.6.2007
2. חלק ראשון: הפתרון הקיים והמצוי ב-Winforms, Console ו-ASP.Net (או: "איך קוראים לך ובת כמה את?"), פורסם ב-8.7.2007
3. חלק שני: שימוש ישיר ב-Validatorים של VAB (או: "איך לגרום לקוד יחסית קריא להפוך להיות ארוך ומעיק"), פורסם ב-9.7.2007
4. חלק שלישי: הכנסת נתוני הוולידטורים לתוך מחלקות (או: "ממלכתי עבור וולידטור ג'נארי"), פורסם ב-10.7.2007
5. חלק רביעי: אינטגרציה בסיסית עם ה-GUI ו-וולידציה מתוך קבצי קונפיוגרציה (או: "קצת יותר Drag&Drop, קצת פחות קוד"), פורסם ב-11.7.2007
6. חלק רביעי המשך: אינטגרציה בסיסית עם ה-GUI ו-וולידציה מתוך קבצי קונפיוגרציה (או: "קצת יותר Drag&Drop, קצת פחות קוד"), פורסם ב-12.7.2007
7. StringLengthValidator - בודקים שהכניסו שם חשפנית, פורסם ב-15.7.2007
8. RangeValidator - נו, תן ציון ל-Lap dance שקיבלת, פורסם ב-16.7.2007
9. DateTimeRangeValidator - מתי ביקרת אצלנו?, פורסם ב-17.7.2007
10. ContainsCharctersValidator ו-Negated - איך קוראים לך?, פורסם ב-18.7.2007
11. RelativeDateTimeValidator - מתי היום-הולדת שלך?, פורסם ב-22.7.2007
12. PropertyComparisonValidator ושני וולידטורים על אותו מאפיין - נבדוק שהמבקר נולד לפני שהוא ביקר במועדון, פורסם ב-24.7.2007
13. RegexValidator - בודקים את הדוא"ל של המבקר , יפורסם ב-25.7.2007
14. DomainValidator - מה הסוג משקה אלכוהולי האהוב עלייך?, יפורסם ב-26.7.2007
15. ObjectValidator - מה המספר פלאפון שלך?, יפורסם ב-29.7.2007
16. ObjectCollectionValidator - מה המספרי פלאפון של החברים שלך?, יפורסם ב-30.7.2007
PropertyComparisonValidator ושני וולידטורים על אותו מאפיין - נבדוק שהמבקר נולד לפני שהוא ביקר במועדון
מסתבר, שהמבקרים במועדון חשפנות שלנו אינם מבריקים מדי.
יש תלונה נפוצה שהמבקרים מתבלבלים בין שדה "תאריך לידה" לשדה "תאריך ביקור".
ישבו מיטב המוחות במועדון החשפנות בחדר אחד ולא יצאו ממנו עד שהגיעו לפתרון.
ההחלטה של מנהל המועדון היא שנבדוק את תאריך הלידה כך שיהיה קטן מתאריך הביקור.
כלומר, נבדוק שהמבקר במועדון אכן נולד לפני שהוא ביקר אצלנו.
נוסיף PropertyComparisonValidator ל-BirthDate.
נשים לב כי זו הפעם הראשונה שאנחנו רואים מאפיין עם שני וולידטורים.
כל מאפיין באפליקציה ניתן לבדוק בכמה וולידטורים ואיזה שצריך. אין הגבלה.
נפרט ל-PropertyComparisonValidator שאנחנו רוצים להשוות את התאריך לידה לתאריך ביקור
עכשיו נצטרך לפרט מה היחס שנרצה בין BirthDate ל-VisitDate ואת היחס הזה נפרט באמצעות ComparisonOpearator.
נקבע שההשוואה בין תאריך לידה לתאריך ביקור היא כך שתאריך לידה קטן מתאריך ביקור.
נראה איך היינו מגדירים את הוולידטור דרך כלי הקונפיוגרציה הגרפי.
נראה את ה-XML שהעריכה הגרפית יוצרת בקובץ BL.config:
שימו לב, יש לנו אלמנט <property> אחד עם כמה אלמנטי <validator> שנצטרך.
נבדוק שבאמת מתבצעת וולידציה ב-GUI:
חשוב להדגיש שמדובר בהשוואה בין מאפיינים, ולכן נוכל למקם את הוולידטור גם מעל המאפיין השני.
בנוסף לקוד הוולידציה הקיים של תאריך לידה :
נוכל להוסיף קוד וולידציה על תאריך ביקור:
נוכל לבחור לאיזה מהמאפיינים נרצה להוסיף את ה-PropertyComparisonValidator או אפילו לשניהם.
הכל ביחס להיגיון העסקי שלנו ואיך הוא מתבטא בלוגיקה של הוולידציה שלנו.