Атрибут StringLength, проверка на стороне клиента и поставщик членства - PullRequest
0 голосов
/ 02 мая 2011

Как передать значение от поставщика членства (взято из web.config) в атрибуты проверки в AccountModels в проекте MVC 3 по умолчанию?

Membership.MinRequiredPasswordLength

возвращает значение, полученное из web.config, и представление Register.cshtml использует его:

<p>
Passwords are required to be a minimum of @Membership.MinRequiredPasswordLength
characters in length.
</p>

Но похоже, что ViewModel в файле AccountModels имеют значения, жестко запрограммированные в:

[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "New password")]
public string NewPassword { get; set; }

Так как мне передать значение из web.config в параметр MinimumLength?

1 Ответ

3 голосов
/ 02 мая 2011

Вы не сможете динамически указывать свойство атрибута так, как хотели бы.Именно поэтому шаблоны жестко запрограммированы.Обходной путь для использования аннотаций данных заключается в том, чтобы ваша модель представления внедрила IValidatableObject и провела проверку пароля по отношению к Membership.MinRequiredPasswordLength.Другим вариантом может быть создание атрибута, наследуемого от ValidationAttribute и проверяющего на Membership.MinRequiredPasswordLength.

У Дэвида Хейдена есть запись , охватывающая оба эти параметра.

Дляна стороне клиента, вам нужно будет реализовать IClientValidatable на модели или пользовательском атрибуте.Вот еще один ответ , который показывает пример.Вам также необходимо добавить функцию проверки на стороне клиента, и вы можете использовать @ Membership.MinRequiredPasswordLength внутри представления Razor, чтобы получить значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...