0

asp.net mvc2 プロジェクトでカスタム属性を作成しました。

[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
public class IsUsernameValidAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        if (value == null)
        {
            return true;
        }

        var username = value.ToString();

        return UserBusiness.IsUsernameValid(username) 
// && value of OtherProperty == true;
    }
}

モデルの場合:

public class MyClass
{
    [IsUsernameValid]
    public string UserName { get; set; }

    public bool OtherProperty { get; set; }
}

UserName の値を取得できますが、カスタム属性内の OtherProperty の値を取得して、それを return 句で使用することはできますか? 前もって感謝します。

4

1 に答える 1

1

これを行う唯一の方法は、クラスレベルの属性を使用することです。これは、登録時にフィールドPasswordとフィールドを検証するためによく使用されます。PasswordConfirmation

出発点としてそこからいくつかのコードを取得します。

[AttributeUsage(AttributeTargets.Class)]
public class MatchAttribute : ValidationAttribute
{
   public override Boolean IsValid(Object value)
   {
        Type objectType = value.GetType();

        PropertyInfo[] properties = objectType.GetProperties();

        ...
   }
}
于 2011-09-05T19:43:14.530 に答える