我有自定义验证属性,例如:
public class MyCustomAttribute : ValidationAttribute {
protected override ValidationResult IsValid(object value, ValidationContext validationContext) {
if ((int)value == 100) {
// do some checking to validate & return ValidationResult accordingly
} else return ValidationResult.Success;
}
}
在这样的用法中:
[DisplayName("My Custom Property")]
[MyCustom(ErrorMessage = "ERROR!!!")]
public int? MyCustomProperty { get; set; }
我的问题是:为什么在MyCustomAttribute内部,在IsValid方法中,validationContext始终为NULL?我需要设置什么特殊的东西才能让它不是NULL?
答案 0 :(得分:3)
如果您使用
ValidationResult IsValid(object value, ValidationContext validationContext)
检查数据是否有效,你必须使用
v.GetValidationResult(propertyValue,new ValidationContext(this))!= ValidationResult.Success
而不是
v.IsValid(propertyValue)
答案 1 :(得分:1)
public override bool RequiresValidationContext => true;
它会起作用