范围验证属性未验证
Range validation attribute not validating
我有一个对象,这么说吧:
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
也是true(应该是false)
我做错了什么?
尝试使用名为 'validateAllProperties' 的额外参数调整对 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);
}
}
我有一个对象,这么说吧:
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
也是true(应该是false)
我做错了什么?
尝试使用名为 'validateAllProperties' 的额外参数调整对 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);
}
}