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或其他什么,只是一个类库