10

我有我的带有数据注释验证属性的实体设置,我正在尝试使用静态验证器类来验证它,但是我得到了不同的异常,这不是正确的方法吗:

string _ValidateProperty(object instance, string propertyName)
        {
            var validationContext = new ValidationContext(instance, null, null);
            validationContext.MemberName = propertyName;
            var validationResults = new List<ValidationResult>();
            var isValid = Validator.TryValidateProperty(instance, validationContext, validationResults);
            if (isValid)
                return string.Empty;
            return validationResults.FirstOrDefault<ValidationResult>().ErrorMessage;
        }
4

1 回答 1

12

您尚未说明您收到的内容,但当您应该传递特定属性的Exception时,您似乎正在将实例传递给方法。TryValidateProperty

代替

Validator.TryValidateProperty(instance, validationContext, validationResults);

尝试

Validator.TryValidateProperty(propertyValue, validationContext, validationResults);

您将不得不传递propertyValue给您的方法(或使用会更慢的反射)

例如

_ValidateProperty(someObject, "Field1", someObject.Field1);
于 2013-05-30T01:33:00.270 回答