数据注释似乎在使用验证程序的值类型上无法正常工作
本文关键字:常工作 工作 类型 注释 程序 验证 数据 | 更新日期: 2023-09-27 18:31:01
为什么总是返回true??
class Program
{
static void Main(string[] args)
{
Person p = new Person();
p.Age = 24;
ICollection<ValidationResult> results = new Collection<ValidationResult>();
bool isValid = Validator.TryValidateObject(p, new ValidationContext(p, null, null), results);
Console.WriteLine("Valid = {0}",isValid);
foreach (var result in results)
{
Console.WriteLine(result.ErrorMessage);
}
Console.ReadKey();
}
}
public class Person
{
[Required(ErrorMessage = "You have to identify yourself!!")]
public int Id { get; set; }
public decimal Age { get; set; }
}
我的使用有什么问题??
int
是一种值类型,永远不能null
。
一个new Person()
将有一个0
Id
,这将满足[Required]
。
通常,[Required]
对值类型毫无用处。
要解决此问题,您可以使用可为空的int?
。
另一种选择是使用 RangeAttribute。 当 Id < 1
时,这应该会出错。
public class Person
{
[Range(1, int.MaxValue, ErrorMessage = "You have to identify yourself!!")]
public int Id { get; set; }
public decimal Age { get; set; }
}