我有以下情况: 具有BithDay属性的域模型。 我希望能够验证年龄(将根据生日计算)低于150岁。 我可以使用内置的验证器来做到这一点,还是我必须自己构建? someoane能为我提供一个DomainValidator的例子吗?
答案 0 :(得分:1)
您可以使用RelativeDateTimeValidator
根据出生日期验证年龄。例如:
public class Person
{
[RelativeDateTimeValidator(-150, DateTimeUnit.Year, RangeBoundaryType.Inclusive,
0, DateTimeUnit.Year, RangeBoundaryType.Ignore,
MessageTemplate="Person must be less than 150 years old.")]
public DateTime BirthDate
{
get;
set;
}
}
// 150 Year old person
Person p = new Person() { BirthDate = DateTime.Now.AddYears(-150) };
var validator = ValidationFactory.CreateValidator<Person>();
ValidationResults vrs = validator.Validate(p);
foreach (ValidationResult vr in vrs)
{
Console.WriteLine(vr.Message);
}
这将打印:“人必须少于150岁。”
答案 1 :(得分:1)
您可以尝试这样的事情:
public class Person
{
public DateTime BirthDate { get; set; }
[RangeValidator(0, RangeBoundaryType.Inclusive, 150, RangeBoundaryType.Exclusive,
MessageTemplate="Person must be less than 150 years old.")]
public int Age
{
get { return (DateTime.Now - this.BirthDate).Days / 365; }
}
}