我刚刚编写了一个扩展方法来提供对 DataContracts 的验证,然后再将它们通过网络发送到我的 API。
扩展方法是:
public static bool IsValid(this object obj, out List<ValidationResult> validations)
{
ValidationContext context = new ValidationContext(obj, null, null);
validations = new List<ValidationResult>();
return Validator.TryValidateObject(obj, context, validations, true);
}
为简洁起见,我将仅列出我正在验证的对象的一个属性:
[Required]
[Display(Name = "X coordinate")]
[Range(-50, 50)]
[DataMember(IsRequired=true)]
public int XCo { get; set; }
如果将此属性设置为 51 并对其进行验证,则返回 true!
[Required]
[Display(Name = "X coordinate")]
[Range(-50, 50, ErrorMessage="Xco outside accepted range")]
[DataMember(IsRequired=true)]
public int XCo { get; set; }
如果将此属性设置为 51 并对其进行验证,则返回 false!
即使使用 null ErrorMessage,我也不希望 Validator 仅仅因为未设置用户提供的字符串属性而在无效对象上返回 true。
有谁知道即使没有设置错误消息属性,是否有办法配置它以正确验证?
我知道这不一定是一个好的解决方案,因为好的错误报告显然非常有用,但我宁愿这个过程以数据为中心。