Переопределить атрибуты аннотации данных в унаследованных моделях

Я создаю веб-приложение 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" или "где вы узнали о нас" и т. Д.

Другие вопросы по тегам