Frage

Ich habe in meinem ASP.NET MVC2 -Projekt benutzerdefinierte Attribut erstellt:

[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;
    }
}

Für das Modell:

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

    public bool OtherProperty { get; set; }
}

Ich kann den Wert des Benutzernamens erhalten, aber kann ich einen Wert anderer Inneren im benutzerdefinierten Attribut erhalten und es als Rückkehrklausel und wie verwenden. Danke im Voraus.

War es hilfreich?

Lösung

Die einzige Möglichkeit, dies zu tun, ist mit einem Klassenebeneattribut. Dies wird häufig zur Validierung der Validierung verwendet Password und PasswordConfirmation Felder während der Registrierung.

Schnapp dir einen Code von dort als Ausgangspunkt.

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

        PropertyInfo[] properties = objectType.GetProperties();

        ...
   }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top