Example: Model příklad 2
Implementace vlastní validace v modelu.
Relationships
Related Elements
Main Description

Podstatnou část každé webové aplikace jsou validace. Dle vytvořené metodiky je doporučeno validace zpracovávat společně s modelem, který jejich implementaci usnadňuje.
Na následujícím výpisu je možné vidět validaci dvou atributů typu datum pomocí anotací, která se následně v aplikaci projeví jak na straně klienta (díky integrované knihovně jQuery), tak serveru.

Kromě validace pomocí předdefinovaných anotací je implementována také validace vlastní, která u výpůjček zajišťuje, aby datum do bylo pozdější než datum od. Toho je dosaženo tak, že třída BorrowingModel implementuje rozhraní IValidatableObject a potřebné chování validace je následně ošetřeno v metodě Validate. Takto vytvořená validace se následně projeví jen na straně serveru. To v praxi znamená, že se formulář po stisknutí tlačítka na odeslání neodešle, ale vrátí se s odpovídající chybou.

public class BorrowingModel : IValidatableObject
{
    [Display(Name = "Od kdy")]
    [DataType(DataType.Date)]
    [DisplayFormat(DataFormatString = "{0:dd. MM. yyyy}")]
    [Required(ErrorMessage = "Atribut {0} je povinný")]
    public DateTime DateFrom { get; set; }     [Display(Name = "Do kdy")]

    [DataType(DataType.Date)]
    [DisplayFormat(DataFormatString = "{0:dd. MM. yyyy}")]
    [Required(ErrorMessage = "Atribut {0} je povinný")]
    public DateTime DateTo { get; set; }    

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (DateTo < DateFrom)
        {
            yield return
                  new ValidationResult(errorMessage: "Datum do musí být pozdější než datum od",
                                       memberNames: new[] { "DateTo" });
        }
    }
}