2009-04-29 111 views
0

Brad Willson在描述如何使用DataAnnotations方面有很棒的文章。 http://bradwilson.typepad.com/blog/2009/04/dataannotations-and-aspnet-mvc.html我想要做的是扩展我可以使用的可用属性。类似[PastDate(您必须输入过去的日期)]或[InvoiceNumber(所有发票以INV开头,以002结尾)]。我知道我可以使用正则表达式属性来完成此操作。然而,具有更多描述性属性将是更清晰的解决方案。在asp.net中为MVC扩展DataAnnotations属性

回答

1

你需要创建一个从System.ComponentModel.DataAnnotations.ValidationAttribute继承的类,然后使用该属性是这样的:

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

还没有尝试过,但它应该工作。

+0

是的,任何派生自ValidationAttribute的属性都可以使用。 – 2009-04-29 23:37:12

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()) { } 
}