我在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子句中使用它以及如何使用它。提前谢谢。
答案 0 :(得分:1)
执行此操作的唯一方法是使用类级别属性。这通常用于在注册期间验证Password
和PasswordConfirmation
字段。
抓住一些代码from there作为起点。
[AttributeUsage(AttributeTargets.Class)]
public class MatchAttribute : ValidationAttribute
{
public override Boolean IsValid(Object value)
{
Type objectType = value.GetType();
PropertyInfo[] properties = objectType.GetProperties();
...
}
}