我刚刚编写了一个扩展方法来提供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,因为没有设置用户提供的字符串属性。
是否有人知道是否有办法将此配置为正确验证,即使未设置错误消息属性?
我知道这不一定是一个好的解决方案,因为良好的错误报告显然非常有用,但我宁愿这个过程是以数据为中心的。