0

なぜこれは常に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; }    

    }

私の使い方の何が問題になっていますか??

4

2 に答える 2

7

intは値型であり、 になることはできませんnull

Aはを満たすのnew Person()を持ちます。 一般に、値型では役に立ちません。Id0[Required]
[Required]

これを修正するには、 nullable を使用できますint?

于 2012-04-11T23:56:17.847 に答える
0

もう1つのオプションは、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; }    

}
于 2012-04-12T00:23:42.160 に答える