使用自定義屬性進行模型驗證

如果內建屬性不足以驗證模型資料,則可以將驗證邏輯放在從 ValidationAttribute 派生的類中。在此示例中,只有奇數是模型成員的有效值。

自定義驗證屬性

public class OddNumberAttribute : ValidationAttribute
{
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        try
        {
            var number = (int) value;
            if (number % 2 == 1)
                return ValidationResult.Success;
            else
                return new ValidationResult("Only odd numbers are valid.");
        }
        catch (Exception)
        {
            return new ValidationResult("Not a number.");
        }            
    }
}

模型類

public class MyModel
{
    [OddNumber]
    public int Number { get; set; }
}