Atrybut na elementach interfejsu nie działa
W mojej aplikacji potrzeba kilku modeliPassword
właściwości (np.Registration
iChangePassword
modele). ThePassword
właściwość ma atrybut podobny doDataType
iRequired
. Dlatego, aby zapewnić powtarzalność, stworzyłem spójność:
interface IPasswordContainer{
[Required(ErrorMessage = "Please specify your password")]
[DataType(DataType.Password)]
string Password { get; set; }
}
I
class RegistrationModel : IPasswordContainer {
public string Password { get; set; }
}
Niestety, atrybuty nie działają.
Następnie próbowałem zmienić interfejs na klasę:
public class PasswordContainer {
[Required(ErrorMessage = "Please specify your password")]
[DataType(DataType.Password)]
public virtual string Password { get; set; }
}
I
public class RegistrationModel : PasswordContainer {
public override string Password { get; set; }
}
Teraz działa. Dlaczego tak jest?
Dlaczego atrybuty działają, gdy są dziedziczone z klasy, ale nie działają, gdy są dziedziczone z interfejsu?