Validation Application Block with Strippers: StringLengthValidator (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 - מתי היום-הולדת שלך?, יפורסם ב-19.7.2007
12. PropertyComparisonValidator ושני וולידטורים על אותו מאפיין - נבדוק שהמבקר נולד לפני שהוא ביקר במועדון, יפורסם ב-22.7.2007
13. RegexValidator - בודקים את הדוא"ל של המבקר , יפורסם ב-23.7.2007
14. DomainValidator - מה הסוג משקה אלכוהולי האהוב עלייך?, יפורסם ב-24.7.2007
15. ObjectValidator - מה המספר פלאפון שלך?, יפורסם ב-25.7.2007
16. ObjectCollectionValidator - מה המספרי פלאפון של החברים שלך?, יפורסם ב-26.7.2007
חלק חמישי: כל ה-Validatorים שמגיעים עם VAB (או: "איך היה הביקור שלך במועדון החשפנות שלנו?")
עד עכשיו ראינו באופן כללי מהם הכלים הבסיסיים ש-VAB מציע לנו. בואו נלך צעד אחד קדימה ובאמת נקבל רשימה של כל הכלים בארסנל שלנו.
יש לנו לא מעט וולידטורים שמגיעים עם VAB ומעבר להיות הארסנל הבסיסי והברירת מחדל שלנו. אלו באמת מדגימים את יכולות הוולידציה של VAB.
בתור התחלה, בואו נגדיר מה אנחנו מנסים לעשות:
לאחר שלקוח קיבל Lap dance במועדון חשפנות שלנו נרצה שהוא יכנס למערכת שלנו, יגיד איך היה הביקור וישאיר פרטים רלוונטים.
ניצור טופס חדש באפליקציית ASP.Net שלנו וטופס חדש באפליקציית Winfroms שלנו.
(מעצב גרפי או באונסר אני כבר לא אהיה)
נוסיף מחלקה חדשה לאפליקציה בשם BL.VisitingRating.
StringLengthValidator - בודקים שהכניסו שם חשפנית
הבן-אדם כרגע עבר Lap dance, ברור שדבר ראשון שהוא שם לב הוא לתג שם של החשפנית.
אז נדאג באמת לקלוט את שם החשפנית. נתחיל כנקודת מוצא להוסיף את המאפיין הרלוונטי למחלקת VisitRating שלנו.
נדאג גם להוסיף שדה מתאים ל-ASP.Net עם PropertyProxyValidator.
ב-Winforms נדאג להוסיף שדה מתאים.
היות וזהו טופס חדש, נוסיף גם ValidationProvider עם ErrorProvider שמכוון על BL.VisitRating.
על שדה ה-TextBox נקבע כי הוא מבצע וולידציה לפי הכללים שנקבעו ב-VistingRating.StripperName.
בשלב זה, טיפלנו ב-GUI שלנו כך שיריץ כללי וולידציה על BL.VisitRating.StripperName.
ל-GUI אין מושג קלוש מה הוא בודק. הוא יכול לבדוק אם השם לא ריק, אם השם מתחרז עם המילה "פלטיפוס" או אם השם בא ממקור אסייתי.
ה-GUI רק יודע לשלוח נתונים ל-VAB ולקבל תוצאות בחזרה.
שימו לב, שבשלב זה, אפילו אנחנו לא יודעים מה הוולידציה שנרצה לעשות!
ההחלטה העסקית שלנו, היא שכאשר לקוחות אומרים איך היה במועדון, הם נדרשים לרשום טקסט כלשהו תחת שם חשפנית.
כלומר, בתרגום לטכנית, מחרוזת שהיא לפחות אות אחת.
נבחר להוסיף StringLengthValidator על VisitRating.StripperName.
בואו נראה מה האפשרונות שלנו ל-StringLengthValidatorAttribute:
מהסוף להתחלה:
1. נוכל לציין רק מספר יחיד והוא יהיה המקסימום תווים בתוך המחרוזת - לא מתאים לנו.
2. נוכל לציין שני מספרים: אחד כמינימום תווים והשני כמקסימום תווים. אבל, אמרנו שאנחנו לא רוצים מקסימום תווים - לא מתאים לנו.
3. נוכל לציין שני מספרים ושני Enumים מוזרים מסוג RangeBoundryType. שני המספרים הם המינימום והמקסימום. בואו נביט על ה-RangeBoundryType הזה או מה שזה לא יהיה.
אפשרות אחת היא RangeBoundryType.Inclusive, כלומר "כולל" אותו גבול.
אפשרות נוספת היא RangeBoundryType.Exclusive, כומר "לא כולל" \ "עד" אותו גבול.
אפשרות אחרונה היא RangeBoundryType.Ignore, שאומר שכלל לא תתבצע וולידציה על גבול זה.
הגבול המינימלי שלנו מבחינת כמות תווים הוא 1 תו אחד (כולל).
הגבול המקסימלי שלנו מבחינת כמות תווים הוא RangeBoundryType.Ignore.
במקום 1,000,000 היינו יכולים לרשום כל דבר (למשל, 0) היות ולא מתבצעת שום וולידציה על הגבול העליון של הוולידטור.
נראה איך ניתן להוסיף את ה-StringLengthValidator דרך הכלי הגרפי ואת ה-XML שהוא מייצר. (אם במקום הוספת ה-Attribute החלטנו להשתמש בקבצי קונפיוגרציה).
היות ועוד לא הוספנו את VisitRating לקובץ הקונפיוגרציה BL.config נוסיף אותו בפעם הראשונה.
נוסיף וולידציה מסוג StringLengthValidaor.
ונקבע לו את המאפיינים ונשמור שינויים.
והנה ה-XML שקיבלנו בקובץ הקונפיגיורציה BL.config.
נריץ את האפליקציות שלנו ונוכל לראות שלא משנה אם בחרנו ב-Attributes או\ו קונפיגיורציה באמת נקבל שגיאה כאשר לא נכתוב שם חשפנית.