This article has been localized into Hungarian by the community.
Modellhitelesítő DataAnnotationök típusai
Az előző cikkben bemutattuk a modellhitelesítést, és hogy milyen egyszerűek is az alapjai. Használtunk is pár ellenőrzéssel kapcsolatos DataAnnotationt, mint a [Required] és [StringLength] attribútumokat, de mint már említettem, vannak mások is. Ebben a cikkben ezeket fogjuk számra venni, hogy lásd az előtted álló lehetőségeket.
[Required]
Azt jelöli, hogy kötelező egy érték megadása erre a tulajdonságra. Tudnod kell, hogy minden nem nullázható érték típus (például integer vagy DateTime) mindenképpen értékkel kell bírjon, ezért ezekhez nem szükséges a [Required] attribútum. Stringeknél fontos észben tartani, hogy egy üres string nullként lesz kezelve, és hitelesítési hibát fog visszaadni. Ezt megakadályozhatod viszont az AllowEmptyStrings tulajdonság segítségével:
[Required(AllowEmptyStrings = true)]
[StringLength]
Megadhatsz vele legalább egy maximum mennyiségű karaktert (ez az első, nem opcionális paraméter) stringek számára, de lehetőséged van minimum hossz megadására is. Íme a példa:
[StringLength(50, MinimumLength = 3)]
Ebben az esetben hiba jön fel, ha kevesebb mint három, vagy több mint ötven karakter hosszú az érték.
[Range]
A [Range] attribútummal megadhatsz egy minimum és maximum értéket egy számszerű értéknek (int, float, double, stb.). Ez esetben a minimum és a maximum határérték is kötelező:
[Range(1, 100)]
Ennél a példánál az érték 1 és 100 között kell legyen.
[Compare]
A [Compare] attribútummal összehasonlítást tehetsz a megjelölt tulajdonság és egy másik tulajdonság közt, amiknek egyezniük kell. Egy jó példa ennek használatára, hogy ellenőrizzük, hogy a felhasználó ugyanazt az értéket adta-e meg az "Email" és az "EmailRepeated" (email ismétlése) mezőkben:
[Compare("MailAddressRepeated")]
public string MailAddress { get; set; }
public string MailAddressRepeated { get; set; }
Specifikus típusok
Ha a stringed egy bizonyos kategóriába tartozik, például telefonszámról van szó, akkor az ASP.NET MVC egyből támogatja az ehhez tartozó hitelesítést. Itt van egy listája a megadható kategóriáknak:
- [CreditCard]: Ellenőrzi, hogy a tulajdonság bankkártyaszám formátumnak felel-e meg.
- [EmailAddress]: Ellenőrzi, hogy a tulajdonság e-mail formátumnak felel-e meg.
- [Phone]: Ellenőrzi, hogy a tulajdonság telefonszám formátumnak felel-e meg.
- [Url]: Ellenőrzi, hogy a tulajdonság URL formátumnak felel-e meg.
Közös ezekben, hogy csak alapvető ellenőrzést hajtanak végre. Például az e-mailes ellenőrzés csak annyit ellenőriz, hogy a megadott érték bír-e egy e-mail bizonyos tulajdonságaival, például van-e benne @ karakter és hasonlók, de ugyanúgy lehetséges marad olyan érték megadása, ami nem valódi e-mail cím. A pontosság és nagyobb flexibilitás érdekében használhatod inkább a [RegularExpression] attribútumot, vagy saját viselkedést implementálhatsz, ahogy azt a következő cikkben be fogjuk mutatni.
[RegularExpression]
Ha a fentiek egyike sem elég hajlékony az igényeidnek, akkor az utolsó megoldás a [RegularExpression] attribútum lehet. Ezzel megadhatsz egy reguláris kifejezést, ami alkalmazva lesz a tulajdonságra, és csak találat esetén lesz jóváhagyva. A reguláris kifejezések túl nagy témakör ehhez a cikkhez, de hadd mutassam be, milyen hasznosak is tudnak lenni. Képzeld el, hogy van egy WebUser osztályod egy MemberId tulajdonsággal, aminek pontosan ebben a formátumban kell lennie:
xx-0000-0000
Más szavakkal: két betű, kötőjel, majd kétszer négy szám ismét kötőjellel köztük, például zx-1234-5678. Írhatunk reguláris kifejezést pontosan erre az esetre, amit megadhatunk a [RegularExpression] attribútumban:
[RegularExpression("[a-z]{2}-[0-9]{4}-[0-9]{4}")]
public string MemberId { get; set; }
A reguláris kifejezésekben rejlő lehetőségekkel szinte végtelenek, és más helyzetben is használhatóak, mint hitelesítésben, szóval megéri megtanulni őket! Itt van pár link ahol megtanulhatod a reguláris kifejezések használatát: Regex Tutorial & Cheat sheet / Regex Interactive Tutorial.
Összefoglalás
Az ASP.NET MVC-be épített számos ellenőrzési lehetőséggel könnyedén hitelesítheted tulajdonságaidat, pusztán egy attribútum hozzáadásával. Ha több irányításra van szükséged efelett, akkor használhatod a [RegularExpression] attribútumot vagy a saját magad írta ellenőrzési logikát, aminek mikéntjét a következő cikkben mutatom be.