2009-04-29 5 views
0

Brad Willson a un excellent article sur la description de l'utilisation de DataAnnotations. http://bradwilson.typepad.com/blog/2009/04/dataannotations-and-aspnet-mvc.html Ce que je voudrais faire est d'étendre les attributs disponibles que je peux utiliser. Quelque chose comme [PastDate (vous devez entrer une date dans le passé)] ou [InvoiceNumber (toutes les factures commencent par INV et se terminent par 002)]. Je sais que je pourrais utiliser l'attribut Expression régulière pour accomplir ceci. Cependant, avoir plus d'attributs descriptifs serait une solution plus propre.Extension des attributs DataAnnotations pour MVC dans asp.net

Répondre

1

Vous devez créer une classe qui hérite de System.ComponentModel.DataAnnotations.ValidationAttribute puis utiliser cet attribut comme ceci:

public class yourModel { 
    [CustomValidation(typeof(yourClass), "yourMethod")] 
    public int yourProperty { get; set; } 
} 

N'a pas essayé mais cela devrait fonctionner.

+0

Oui, tout attribut dérivé de ValidationAttribute fonctionnera. –

0

J'ai un peu d'entre eux dans mon projet - certains utilisent encore des expressions régulières, mais au moins cette façon, ils sont seulement dans un seul endroit:

public class TelephoneAttribute : RegularExpressionAttribute 
{ 
    public TelephoneAttribute() 
     : base(@"^\(?(\d{3}\)?)((-|)?\d{3})(-?\d{4})$") { } 
} 

Et plus comme ce que votre exemple:

public class MinimumDateAttribute : RangeAttribute 
{ 
    public MinimumDateAttribute(string MinimumDate) 
     : base(typeof(DateTime), MinimumDate, DateTime.MaxValue.ToShortDateString()) { } 
} 
Questions connexes