2009-04-29 14 views
0

Brad Willsonには、DataAnnotationsの使い方を説明する素晴らしい記事があります。 http://bradwilson.typepad.com/blog/2009/04/dataannotations-and-aspnet-mvc.html私がしたいのは、私が使用できる利用可能な属性を拡張することです。 [PastDate(過去の日付を入力する必要があります)]または[InvoiceNumber(INVで始まりすべて002で終了)]]のようなものです。私はこれを達成するために正規表現属性を使用できることを知っています。しかし、より記述的な属性を持つことは、よりクリーンなソリューションになります。あなたはSystem.ComponentModel.DataAnnotations.ValidationAttributeから継承するクラスを作成し、このようにその属性を使用する必要がasp.netでMVAのDataAnnotations属性を拡張する

答えて

1

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

はそれを試していないが、それは動作するはずです。

+0

はい、ValidationAttributeから派生したすべての属性が機能します。 –

0

私は私のプロジェクトでは、これらのいくつかを持っている - いくつかは、まだ正規表現を使用しますが、彼らは一箇所にのみだ少なくともこの方法:

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

そして、もっと何あなたの例のように:

public class MinimumDateAttribute : RangeAttribute 
{ 
    public MinimumDateAttribute(string MinimumDate) 
     : base(typeof(DateTime), MinimumDate, DateTime.MaxValue.ToShortDateString()) { } 
} 
関連する問題