Читать значение другого свойства в пользовательском атрибуте asp.net mvc2? - PullRequest
0 голосов
/ 05 сентября 2011

Я создал пользовательский атрибут в моем проекте 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 внутри пользовательского атрибута и использовать его в предложении возврата и как.Заранее спасибо.

1 Ответ

1 голос
/ 05 сентября 2011

Единственный способ сделать это с помощью атрибута уровня класса. Это часто используется для проверки полей Password и PasswordConfirmation при регистрации.

Получите оттуда код в качестве отправной точки.

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

        PropertyInfo[] properties = objectType.GetProperties();

        ...
   }
}
...