Validatie Flashcards
Wat is data validatie?
Voorwaarden waaraan de datastructuren van een applicatie moeten voldoen
Wat is het verschil tussen validatie-definitie en validatie-logica?
validatie-definitie: Het definiëren van een voorwaarde
validatie-logica: het al dan niet geldig verklaren
Wat is “bad practice” in data validatie
Op property niveau binnen de set-accessor
Wat is “good practice” in data validatie
Via metadata (attributen) op type, veld, property
Waarom is data validatie via metadata good practice?
Zorgt ineens voor de opsplitsing van validatie-definitie en validatie-logica
Wat is het Validation Framework?
Functionaliteit in .NET om validaties te definiëren en te controleren
Van waar installeren we packages en hoe doen we dat
NuGet en via CLI
Geef 5 predefined validation-attributes
KeyAttribute RequiredAttribute MinLengthAttribute MaxLengthAttribute StringLengthAttribute RangeAttribute RegularExpressionAttribute EmailAdressAttribute ...
Wat is het KeyAttribute?
Unieke identifier van een entiteit
Cfr. PK in een databank
RequiredAttribute?
Attribuut moet verplicht een waarde hebben, dwz dat het niet null mag zijn (!=null)
Bij string waarden mag het ook niet leeg zijn of enkel spaties bevatten
Waarbij moeten we opletten bij RequiredAttribute?
Value type zijn standaard verplicht dus heeft Required geen meerwaarde
Indien je deze niet verplicht wil maken dan moet je de value-type nullable maken (int?, byte?,…)
RangeAttribute(int n,int m)?
De waarde van de property moet tussen n en m liggen
MinLengthAttribute(int n)?
De waarde van de property die als datatype een array moet zijn moet minimaal n elementen bevatten
String = Array van chars
Werkt NIET op List
MaxLentghtAttribute(int n)?
De waarde van de property die als datatype een array moet zijn mag maximaal n elementen bevatten
String = array van chars
Werkt NIET op List
StringLengthAttribute(int max[, int min])?
De waarde van de property die als datatype een string moet zijn, mag maximaal max tekens hebben, en optioneel minimum min tekens bevatten
RegularExpressionAttribute(string Regex)?
De waarde van de property moet voldoen aan de opgegeven regular expression. Indien ^ en $ aan respectievelijk aan begin en eind niet opgegeven worden, dan worden deze automatisch toegevoegd
EmailAdressAttribute?
De waarde van de property moet een geldig email bevatten
Wat is de validatorklasse?
Statische klasse die de mogelijkheid geeft om gedefinieerde validatie-definities uit te voeren
Welke 2 methodes bevinden zich in de validatorklasse?
ValidateObject(Object, ValidationContext)
TryValidateObject(Object, ValidationContext, IEnumerable)
Welke mogelijke parameters zijn er in de validatorklasse?
Object, ValidationContext, IEnumerable, ValidateAllProperties
Object?
Het te valideren object
ValidationContext?
Extra info mbt de validatie-definitie
IEnumerable
lijst waarin de validatieerrors worden bijgehouden
ValidateAllProperties?
Boolean, om te bepalen of enkel de required attributes gecontroleerd moeten worden of ook andere validaties
ValidateObject(Object, ValidationContext)?
Gooit een ‘ ValidationException ‘ bij de eerste
validatie definitie waaraan niet voldaan wordt
Bevat op zich één ‘ ValidationResult
Message geeft ook de foutboodschap
TryValidateObject(Object, ValidationContext, IEnumerable)?
Returnwaarde ( boolean ) geeft aan of aan (alle)
validatie definities voldaan is
Lijst van ‘ ValidationResults ‘ wordt meegegeven
waarin ongeldigheden toegevoegd worden
Wat zijn de properties van de ValidationResult klasse?
ErrorMessage en MemberNames
ErrorMessage?
string, info betreffende de ongeldige validatie
MemberNames
IEnumerable
opsomming van de velden/ properties (als
string waarden) die betrekking hebben op
de uitgevoerde validatie
Wat is User-defined validations?
Eigen validatie logica inhaken op het Validation Framework
Gebruik je om validatie voorwaarde te definiëren die niet mogelijk zijn via pre defined attributes
Je gebruikt hiervoor de IValidatableObject interface
Leg uit Interface ‘IValidatableObject’
Namespace : System.ComponentModel.DataAnnotations
Interface bevat één methode die je moet implementeren: IEnumerable Validate(ValidationContext context)
Wordt automatisch door het Validation Framework
opgeroepen bij een controle met Validator.ValidateObject of Validator.TryValidateObject
OPGELET:
Er kunnen GEEN criteria waarden gedefinieerd worden, maar is binnen
het type gedeclareerd dus alle members van het type zijn bereikbaar
Bij gebruik in combinatie met ‘validation attributes’, zal deze methode
enkel uitgevoerd worden als alle ‘validation attributes’ geldig
TIP:
Gebruik eventueel ‘explicit interface implementatie’