我有一个对象,让我们这样说:
public class Person{
[Range(1, 100)]
public int Id {get;set;}
[Required]
public string Name {get;set;}
}
正如您所见,Id
至少应包含1,并且名称字段是必需的。
我有这种验证方法:
private static void ValidateObject(Person obj){
var context = new ValidationContext(obj, serviceProvider: null, items: null);
var results = new List<ValidationResult>();
var isValid = Validator.TryValidateObject(obj, context, results);
if (!isValid)
{
throw new InvalidOperationException(results.First().ErrorMessage);
}
}
如果我将Name
留空,则会抛出错误。正确!
如果我将Id
保留为0,则不会抛出错误。这是我无法弄清楚的。变量isValid
也是真的(应该是假的)
我做错了什么?
答案 0 :(得分:2)
尝试使用名为&#39; validateAllProperties&#39;的额外参数调整对Validator.TryValidateObject的调用。并将其设置为true。如果省略它或将其设置为false(默认),则不会验证不需要的属性。
private static void ValidateObject(Person obj){
var context = new ValidationContext(obj, serviceProvider: null, items: null);
var results = new List<ValidationResult>();
var isValid = Validator.TryValidateObject(obj, context, results, true);
if (!isValid)
{
throw new InvalidOperationException(results.First().ErrorMessage);
}
}