1

次のような状況があります: プロパティ BithDay を持つドメイン モデル。年齢 (誕生日に応じて計算されます) が 150 歳未満であることを確認できるようにしたいと考えています。組み込みのバリデーターを使用してそれを行うことはできますか?それとも自分でビルドする必要がありますか? DomainValidator の例を教えてもらえますか?

4

2 に答える 2

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; }
    }
}
于 2013-10-24T09:53:10.387 に答える
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 歳未満である必要があります」と出力されます。

于 2013-10-23T19:03:35.853 に答える