防止在VIewModel中重复验证注释的最佳方法?

时间:2017-03-20 13:22:14

标签: c# asp.net-mvc asp.net-mvc-5

我有一个具有大约30个输入属性的Viewmodel,带有十进制正则表达式验证,即:

[RegularExpression(@"\d+(\.\d{1,2})?", ErrorMessage = "Invalid decimal")]
public string strProperty { get; set; }

但是我不想为每个财产重复这个。有没有办法更加集中和干这个。

一个想法是定义“\ d +(。\ d {1,2})?”作为常数。

...谢谢

1 个答案:

答案 0 :(得分:2)

想到的一种方式是继承自RegularExpressionAttribute

public class DecimalAttribute : RegularExpressionAttribute {
    public DecimalAttribute() : base(@"\d+(\.\d{1,2})?") {
        this.ErrorMessage = "Invalid decimal";
    }
}

然后就变成了:

[Decimal]
public string strProperty { get; set; }

假设您知道自己在做什么,而不能只使用decimal而不是字符串。