c# - 使用 System.ComponentModel.DataAnnotations.Validator 验证属性

标签 c# .net wpf

我的实体设置为 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;
        }

最佳答案

您还没有说明您收到的是什么Exception,但看起来您正在将您的实例传递给TryValidateProperty 方法,而您应该传递 特定属性。

代替

Validator.TryValidateProperty(instance, validationContext, validationResults);

尝试

Validator.TryValidateProperty(propertyValue, validationContext, validationResults);

你必须将 propertyValue 传递给你的方法(或使用反射,这会更慢)

例如

_ValidateProperty(someObject, "Field1", someObject.Field1);

关于c# - 使用 System.ComponentModel.DataAnnotations.Validator 验证属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16781621/

相关文章:

c# - 如何使用时区信息解析日期时间

c# - 如何使用 C# 唯一标识计算机?

c# - 在 WPF 中使用 ItemsControl 时正确对齐控件

wpf - 设计时错误(未找到可附加属性 x)

c# - 如何在 Javascript 中设置 ASP.NET 服务器时间

.net - TFS 在构建服务器上不部署引用的程序集来测试目录

c# - 如何解决重定向循环

.net - PasswordSignInAsync卡在.Core App中

c# - DataTemplate 中按钮的 MouseOver 效果

c# - 在 MVVM 中实现 ICommand 时,我遗漏了一些东西