Validator.TryValidateObject does not validate attribute
使用WebApi v2,我构建了将对象作为参数的对象。我同时使用IValidateableObject和dataannotation对通过WebApi过滤器触发的模型进行验证。
但是,一个对象包含一组需要全部验证的项目。我创建了一个自定义属性,以使用诸如Asp.net Web Api嵌套模型验证之类的方法来执行此操作,但是我无法进行验证。另外-我已经使用ValidateAllProperties标志。
因此,我构建了一个控制台应用程序来验证行为,并且似乎没有触发验证(或者我错误地调用了API)。这对我不起作用:
命名空间ConsoleApplication1
{
使用系统;
使用System.Collections.Generic;
使用System.ComponentModel.DataAnnotations;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | class Program { static void Main() { var s = new Boundary { LowerDecimal = 1.1m }; var isValid = Validator.TryValidateObject(s, new ValidationContext(s, null, null), new List<ValidationResult>(), true); Console.WriteLine("Validation resulted in" + isValid); Console.ReadLine(); } } public class Boundary { [Range(0,1)] public decimal LowerDecimal { get; set; } } |
}
isValid始终返回true。我在这里做错了什么?
编辑-也尝试过定义MetaData类,如下所示:当我使用Validator.TryValidateObject时,验证不起作用
问题在于属性有2个重载(一个重载
简单修复,确保您的属性知道您要比较
1 2 | [Range(0.0, 1.0)] public decimal LowerDecimal { get; set; } |