מדריך ASP.NET MVC – תקינות הקלט – Data Annotations
בפרק הקודם ראינו כיצד להשתמש ב-ModelState על מנת לייצג שגיאות תקינות קלט. כאשר עובדים באופן שכזה נדרש לכתוב קוד מפורש שמוודא את תקינות אובייקט הקלט ולמלא את השגיאה המתאימה בתוך ה-ModelState. בפרק זה נראה כיצד התשתית הקרויה DataAnnoation עוזרת לנו לכתוב פחות קוד הקשור בניהול תקינות הקלט וליהנות מחוית משתמש אפילו טובה יותר מאשר קודם.
להורדת הקוד של הפרק הקודם לחץ כאן
DataAnnotation הינה ספרית תשתית של NET Framework. אשר קיימת כבר בגרסא 3.5. ספריה זו מכילה בעיקר אוסף של Attributes אותם ניתן לשתול על אובייקטי המודל.
פתח את הקובץ: Models\Group.cs. עדכן את הקוד כך שיכיל את ה-Attributes המתאימים:
public class Group : BookItem
{
...
[Required(ErrorMessage = "Please specify a name")]
public string Name { get; set; }
...
}
שים לב לשימוש ב-Attribute בשם Required.
בנוסף עדכן את הקוד של ה-Create Action תחת ה-Controller Group:
[HttpPost]
public ActionResult Create(Group group)
{
if (!this.ModelState.IsValid)
{
return View(group);
}
AddressBookDB db = AddressBookDB.Create();
db.Root.Items.Add(group);
return RedirectToAction("Index");
}
שים לב כיצד הקוד עושה שימוש ב- ModelState.IsValid. קוד זה מאפשר לנו לדעת האם ASP.NET MVC הצליח לעדכן את המודל (האובייקט group) בהינתן הקלט מה-Browser ובהינתן ה-DataAnnoation על המודל עצמו.
במידה והעדכון נכשל ASP.NET MVC ממלא את ה-ModelState עם כל השגיאות הרלוונטיות.
הרץ את התוכנית ונסה ליצור קבוצה חדשה ללא שם. שים לב כי ה-Browser מזהה כי חסר נתון הכרחי (Name) ומציג שגיאה באדום:
נסה ללחוץ שוב על כפתור ה-Create. שים לב כי הבקשה כלל איננה נשלחת לשרת אלא ה-Browser עצמו מזהה כי הנתונים אינם תקינים. כלומר, ASP.NET MVC מייצר Client Side Scripts על מנת לבצע את ה-Validation כבר בצד הלקוח ומונע את ה-Post Back לשרת.
הדבר המפתיע הוא שמבט בתוך ה-HTML בצד ה-Browser לא מראה שום סימן להימצאות JavaScript קוד.
הסיבה לכך נעוצה בעובדה ש- ASP.NET MVC משתמש בטכניקה המקובלת של Unobtrusive JavaScript על מנת לבצע את ה-Validation מבלי ללכלך את ה-HTML. ניתן לקבל מידע נוסף על טכניקה זו כאן
ספריית DataAnnotation מכילה Attributes נוספים שימושיים. מבט ב-MSDN יגלה כי רשימה זו איננה קטנה כלל וכלל ובעזרתה אפשר לייצר קוד Validation בקלות וביעילות. ברשימה הבאה ניתן למצוא את ה-Attributes היותר שכיחים:
- Display – מציין את ה-Display Name של השדה. בדוגמא שלנו, אפשר להשתמש ב-Attribute זה עבור ה-FirstName Property במחלקה Person ולציין Display Name מתאים יותר, לדוגמא: "First Name"
- Range –קובע טווח של ערכים חוקיים. חריגה מהטווח תגרום לשגיאת Validation
- RegularExpression – זהו Attribute שימושי מאוד שכן הוא מאפשר לבטא טווח מורכב יותר של ערכים חוקיים מאשר שאר ה-Attributes. הטווח מיוצג ע"י ביטוי רגולרי.
- StringLength – מציין את האורך המכסימלי המותר עבור שדה מסוים
בפרק זה למדנו כיצד ניתן להשתמש ב-Attributes השונים של System.ComponentModel.DataAnnotations על מנת לייצר תהליכי Validation בצד השרת ובצד ה-Browser.
בפרק הבא נלמד כיצד לייצר תצוגת עריכה.
תגובות בפייסבוק