我的实体设置有Data Annotation验证属性,我试图使用静态Validator类验证它,但我得到了不同的例外,这不是正确的方法:
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;
}
答案 0 :(得分:12)
您尚未说明您收到的Exception
,但是当您传递特定属性的值时,您似乎正在将实例传递给TryValidateProperty
方法。
而不是
Validator.TryValidateProperty(instance, validationContext, validationResults);
试
Validator.TryValidateProperty(propertyValue, validationContext, validationResults);
你必须将propertyValue
传递给你的方法(或者使用反射速度较慢)
例如
_ValidateProperty(someObject, "Field1", someObject.Field1);