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

做到这一点的唯一方法是使用类级别属性。这通常用于在注册期间验证PasswordPasswordConfirmation字段。

从那里获取一些代码作为起点。

[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 回答