В моем приложении несколько моделей нуждаются в свойствах Password
(например, Registration
и ChangePassword
). Свойство Password
имеет атрибут типа DataType
и Required
. Поэтому для обеспечения повторного использования последовательности я создал:
interface IPasswordContainer{
[Required(ErrorMessage = "Please specify your password")]
[DataType(DataType.Password)]
string Password { get; set; }
}
и
class RegistrationModel : IPasswordContainer {
public string Password { get; set; }
}
К сожалению, атрибуты не работают.
Затем я попытался изменить интерфейс на класс:
public class PasswordContainer {
[Required(ErrorMessage = "Please specify your password")]
[DataType(DataType.Password)]
public virtual string Password { get; set; }
}
и
public class RegistrationModel : PasswordContainer {
public override string Password { get; set; }
}
Теперь он работает. Почему это так?
Почему атрибуты работают, когда унаследованы от класса, но не работают, когда унаследованы от интерфейса?