Переопределить атрибуты аннотации данных в унаследованных моделях
Я создаю веб-приложение mvc 5 и использую следующую модель для проверки:
public abstract class AccountModel
{
public abstract string Password { get; set; }
}
public class EditAccountModel : AccountModel
{
[DataType(DataType.Password)]
[Display(ResourceType = typeof(UsersResources), Name = "Password")]
public override string Password { get; set; }
}
public class RegisterAccountModel : AccountModel
{
[DataType(DataType.Password)]
[Required]
[Display(ResourceType = typeof(UsersResources), Name = "Password")]
public override string Password { get; set; }
}
Я хочу иметь базовый класс для использования в той же форме редактирования, как это: @model WebApplication.AccountModel
<div class="form-group">
@Html.LabelFor(x => x.Password)
@Html.PasswordFor(x => x.Password)
</div>
но с другими правилами валидации. В настоящее время проверка на стороне клиента не работает, так как модель имеет тип AccountModel
, Можно ли добавить атрибуты на унаследованную модель и поддерживать проверки на стороне клиента и на стороне сервера asp.net mvc 5?
1 ответ
Из того, что вы описали, в Account Model нет аннотаций данных, и вы используете их в своем представлении.
Вы пытались сделать так, чтобы ваше мнение взяло вместо RegisterAccountModel?
Похоже, вы пытаетесь получить повторное использование своего кода, но, возможно, вы пытаетесь здесь слишком усердно. Возможно, регистрация и управление учетной записью - это не одно и то же - возможно, при регистрации вы добавляете функцию "captcha" или "где вы узнали о нас" и т. Д.