C# 范围验证属性未验证

C# 范围验证属性未验证,c#,validation,data-annotations,C#,Validation,Data Annotations,我有一个目标,让我们这样说: public class Person{ [Range(1, 100)] public int Id {get;set;} [Required] public string Name {get;set;} } 正如您所看到的,Id至少应该包含1,并且name字段是必需的 我有以下验证方法: private static void ValidateObject(Person obj){ var context = new V

我有一个目标,让我们这样说:

public class Person{
    [Range(1, 100)]
    public int Id {get;set;}

    [Required]
    public string Name {get;set;}
}
正如您所看到的,
Id
至少应该包含1,并且name字段是必需的

我有以下验证方法:

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);
    }        
}
private静态void ValidateObject(Person obj){
var context=newvalidationcontext(obj,serviceProvider:null,items:null);
var results=新列表();
var isValid=Validator.TryValidateObject(对象、上下文、结果);
如果(!isValid)
{
抛出新的InvalidOperationException(results.First().ErrorMessage);
}        
}
如果我将
名称保留为空,它将抛出一个错误。对的
如果我将
Id
保留为0,则不会抛出错误。这是我无法理解的。变量
isValid
也为真(应为假)

我做错了什么?

尝试使用名为“validateAllProperties”的额外参数调整对的调用,并将其设置为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);
    }        
}
private静态void ValidateObject(Person obj){
var context=newvalidationcontext(obj,serviceProvider:null,items:null);
var results=新列表();
var isValid=Validator.TryValidateObject(obj,上下文,结果,true);
如果(!isValid)
{
抛出新的InvalidOperationException(results.First().ErrorMessage);
}        
}

您使用的应用程序类型是什么?MVC,WPF?它只是类中调用验证的对象和方法。没什么特别的。没有MVC、WPF、ASP或其他什么,只是一个类库