在asp.net中扩展MVC的DataAnnotations属性

时间:2009-04-29 14:32:35

标签: asp.net-mvc

Brad Willson撰写了一篇关于如何使用DataAnnotations的精彩文章。 http://bradwilson.typepad.com/blog/2009/04/dataannotations-and-aspnet-mvc.html我想要做的是扩展我可以使用的可用属性。类似[PastDate(您必须输入过去的日期)]或[InvoiceNumber(所有发票以INV开头,以002结尾)]。我知道我可以使用Regular表达式属性来完成此任务。但是,具有更多描述性属性将是更清洁的解决方案。

2 个答案:

答案 0 :(得分:1)

您需要创建一个继承自System.ComponentModel.DataAnnotations.ValidationAttribute的类,然后使用该属性:

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

没试过但它应该有用。

答案 1 :(得分: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()) { }
}