4

次のような生年月日の検証属性を作成しました。

public class DateRequired : ValidationAttribute
    {
        public override bool IsValid(object value)
        {
            DateTime date = Convert.ToDateTime(value);
            return date != DateTime.MinValue;
        }
    }

    public class DateGraterThanEighteen : ValidationAttribute
    {
        public override bool IsValid(object value)
        {
            DateTime date = Convert.ToDateTime(value);
            long ticks = DateTime.Now.Ticks - date.Ticks;
            int years = new DateTime(ticks).Year;
            return years >= 18;
        }
    }

I applied attributes like this

        [DateGraterThanEighteen(ErrorMessage="You must be at least 18")]
        [DateRequired(ErrorMessage = "Date of birth is required")]
        public DateTime DateOfBirth { get; set; }

それらを適用する順序に関係なく、DateGraterThanEighteen が最初に実行されます。DateRequired を最初に実行するにはどうすればよいですか?

4

1 に答える 1

0

フィルタに注文を適用できます。検証属性を使用できるかどうかわからない

[DateGraterThanEighteen(ErrorMessage="You must be at least 18"), Order=1]
[DateRequired(ErrorMessage = "Date of birth is required"), Order=2]
public DateTime DateOfBirth { get; set; }

参考までに、スペルを間違えました:)

更新:気にしないでください、これを行うことはできません。あなたはModelValidationProviderを作成する必要があります。

于 2012-07-14T01:45:18.097 に答える