4

我刚刚编写了一个扩展方法来提供对 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。

有谁知道即使没有设置错误消息属性,是否有办法配置它以正确验证?

我知道这不一定是一个好的解决方案,因为好的错误报告显然非常有用,但我宁愿这个过程以数据为中心。

4

0 回答 0